socket通信,我的计算机连不上服务器

我在阿里云上面租了一个服务器,然后在我的电脑上能用socket协议与服务器通信吗

2个回答

能,服务器需要设置安全组放行,不然无法连接服务器

可以实现,是需要在阿里云服务器中的安全组设置中将自己设置的远程连接的端口号开放就行。【本人已成功实验】

开放端口号,具体方法稍加百度就能查到。阿里云服务器除了一般的 22 3389 等端口开放,其他默认是关闭的,尽管你在服务器中针对防火墙等设置
开放。

也就是说,你的其他连接,例如MySQL 的 3306 端口,也需要你自己开通。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
怎么使用电脑控制微波信号源
我用的hitter公司的HMC系列信号源,现在我想通过计算机来控制信号源的输出频率, 我想用socket来实现。 我设想的流程是 1. 安装NI MAX,建立底层连接 1. 在VS中编程 想找大佬询问一下是不是这样的流程,以及Socket通信不是分为服务器和客户端吗?说明书上的范例代码直接就是控制代码,这是因为与仪器通信不是服务器客户端架构吗? 此外,说明书上写的是socket的范例代码是在Labwindows8.1下测试,与我使用NI MAX建立VISA有区别吗? 本人纯粹小白,没有搞过仪器控制,也不懂SCPI指令,也不懂Labwindows和Labview,都在现学现用, 有没有好心大佬指点一下!
【新手求教】关于socket外网通信
自己写的基于socket的winform服务器和Android客户端使用TCP通信。实现后像微信朋友圈的那种。 在连入同一个局域网下客户端和服务器可以实现通信,现在我想让外网的客户端也能访问服务器。 由于本人入门没多久,查了些资料,然后准备用花生壳把我连在内网的PC做服务器,连入另一个内网的手机做客户端。花生壳给了我一个域名,我添加映射后在我的PC上添加一个IIS服务,然后别人的PC已经可以访问我的那个域名了。然后我用IP138查那个域名获得了一个IP,就把它设置成客户端要绑定的IP,但是结果客户端连不上。 又百度了一下发现众说纷纭,什么NAT打洞啦,还有说做各种没听说过的测试啦。于是头昏脑胀不知到底该怎么办了。只求有木有大侠做过类似的项目的赐教一些经验心得,本人计算机网络知识少得可怜,给个学习的方向也好,感谢在先!
Socket通信的一个奇怪现象,大家一起来看看
通信模型: <br /> <br />1.客户端发送76字节的封包 <br />2.服务器收到76字节封包、返回2133字节封包到客户端 <br />3.客户端收到2133字节封包、返回16字节封包做响应 <br />4.客户端发送76字节封包 <br />5.服务器端收到16字节封包,不做处理 <br />6.回到2的操作 <br /> <br />运行环境: <br />Java1.5 <br />局域网(本机测试不会发生下面的问题) <br /> <br />现象: <br />1.使用上面的通信模型,客户端两次发出76字节封包的间隔需要40ms之久(依网络情况而定) <br />2.如果将将第3步的后半部分去掉,即客户端不发送16字节响应,客户端两次发送76字节封包的间隔变成只有0-1ms <br />3.如果第3步不变,使服务器端收到16字节封包后随便给客户端回应个什么,那么客户端两次发送76字节封包的间隔也变成了0-1ms <br /> <br />总之,如果客户端与服务器端的封包是一一对应的话,速度将很快。如果客户端发3个包,服务端响应一次的话,速度将非常慢。 <br /> <br />不知道是JAVA本身的问题,还是TCP的机制本就如此? <br /> <br />下面是服务器端和客户端代码: <br /> <br />Client.java <br /><pre name="code" class="java">import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; public class Client { /** * @param args */ public static void main(String[] args) throws Exception{ Socket socket = new Socket(); System.out.println("Connecting..."); socket.connect(new InetSocketAddress(InetAddress.getByName("10.2.2.141"),9999)); System.out.println("Connected."); InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); out.write(new byte[76]); out.flush(); int i = 0; long t = System.currentTimeMillis(); byte[] delivery = new byte[2133]; while(in.read(delivery) != -1){ // 16字节响应,如果不发送响应,通信速度将大幅提升 out.write(new byte[16]); out.flush(); out.write(new byte[76]); out.flush(); if(++i % 100 == 0){//计算两次发送76字节封包间的平均时间 System.out.println("TIME: " + (System.currentTimeMillis() - t) / 100); t = System.currentTimeMillis(); } } } } </pre> <br /> <br />TServer.java <br /><pre name="code" class="java">import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; public class TServer { public static void main(String[] args) throws Exception{ ServerSocket ss = new ServerSocket(); System.out.println("Server starting..."); ss.bind(new InetSocketAddress(InetAddress.getByName("10.2.2.141"), 9999)); Socket socket = ss.accept(); System.out.println("Client connected: " + socket.getRemoteSocketAddress()); InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); int r = 0; byte[] b = new byte[2048]; while((r = in.read(b)) != -1){ if(r == 76){ System.out.println("GET"); out.write(new byte[2133]); System.out.println("DELIVERY"); }else if(r == 16){ System.out.println("RESP"); //如果收到16字节封包后随便回应点东西给客户端,速度也将大幅提升 //out.write(new byte[2133]); } } } } </pre> <br />
socket通信中多收到了字符 \ufffd
我的程序是一个基于socket的即时群聊系统 客户端和服务器socket都是用utf-8编码。客户端和服务器在同一台机器上测试的时候,完全正常。当分开时,客户端本来应该收到hello这个单词,现在却多收到了两个字符 \ufffd\ufffd eclipse中编译时设置了utf-8. 这是服务端的流: OutputStreamWriter stream = new OutputStreamWriter( socket.getOutputStream(), "UTF8"); pw = new PrintWriter(stream); br = new BufferedReader(new InputStreamReader( socket.getInputStream(), "UTF8")); 这是客户端的流: BufferedReader br = new BufferedReader(new InputStreamReader( clientSocket.getInputStream(), "UTF-8")); OutputStreamWriter stream = new OutputStreamWriter(clientSocket.getOutputStream(), "UTF-8"); 服务端发送的消息是: pw.println("hello"); pw.flush(); 客户端收到的是 \ufffd\ufffdhello
一个弱弱的问题:在web页面中使用socket
应用场景: 类似于网盘一个web项目,通过浏览器可以查看到个人的文件资料,并且要实现文件的上传下载。 但是老大的要求是:用socket走自定义协议与服务器通信,不能再添加新的web服务器,因为现在的服务器端就是用的nginx。 我的理解就是相当于在web页面中使用socket与服务器通信,不知道对不对? 老大对web开发不懂,我说这个必须要用一个tomcat,他非说不行。 望web牛人给个指点啊?
关于java 实现socket的异步通信
我在网上也找到一个例子,但是没有客户端,我自己写了一个用ServerSocket连的客户端,但是连接上后不能写也不能读,不知道怎么回事,请高手解决。最好能给一个简单异步编程的例子。 下面是代码: package org.scorpion.scoket; /** * * @author chenjd */ import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.channels.SelectableChannel; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.nio.charset.CharacterCodingException; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.util.HashMap; import java.util.Iterator; import java.util.Set; public class NBServer { int port = 8090; int BUFFERSIZE = 1024; Selector selector = null; ServerSocketChannel serverChannel = null; HashMap clientChannelMap = null;// 用来存放每一个客户连接对应的套接字和通道 public NBServer(int port) { this.clientChannelMap = new HashMap(); this.port = port; } public void initialize() throws IOException { // 初始化,分别实例化一个选择器,一个服务器端可选择通道 this.selector = Selector.open(); this.serverChannel = ServerSocketChannel.open(); this.serverChannel.configureBlocking(false); InetAddress localhost = InetAddress.getLocalHost(); InetSocketAddress isa = new InetSocketAddress(localhost, this.port); this.serverChannel.socket().bind(isa);// 将该套接字绑定到服务器某一可用端口 } // 结束时释放资源 public void finalize() throws IOException { this.serverChannel.close(); this.selector.close(); } // 将读入字节缓冲的信息解码 public String decode(ByteBuffer byteBuffer) throws CharacterCodingException { Charset charset = Charset.forName("ISO-8859-1"); CharsetDecoder decoder = charset.newDecoder(); CharBuffer charBuffer = decoder.decode(byteBuffer); String result = charBuffer.toString(); return result; } // 监听端口,当通道准备好时进行相应操作 public void portListening(String data) throws IOException, InterruptedException { // 服务器端通道注册OP_ACCEPT事件 SelectionKey acceptKey = this.serverChannel.register(this.selector, SelectionKey.OP_ACCEPT); // 当有已注册的事件发生时,select()返回值将大于0 while (acceptKey.selector().select() > 0) { System.out.println("event happened"); // 取得所有已经准备好的所有选择键 Set readyKeys = this.selector.selectedKeys(); // 使用迭代器对选择键进行轮询 Iterator i = readyKeys.iterator(); while (i.hasNext()) { SelectionKey key = (SelectionKey) i.next(); i.remove();// 删除当前将要处理的选择键 if (key.isAcceptable()) {// 如果是有客户端连接请求 System.out.println("more client connect in!"); ServerSocketChannel nextReady = (ServerSocketChannel) key .channel(); // 获取客户端套接字 Socket s = nextReady.accept().socket(); // 设置对应的通道为异步方式并注册感兴趣事件 s.getChannel().configureBlocking(false); SelectionKey readWriteKey = s.getChannel().register( this.selector, SelectionKey.OP_READ | SelectionKey.OP_WRITE); // 将注册的事件与该套接字联系起来 readWriteKey.attach(s); // 将当前建立连接的客户端套接字及对应的通道存放在哈希表//clientChannelMap中 this.clientChannelMap.put(s, new ClientChInstance(s .getChannel())); } else if (key.isReadable()) {// 如果是通道读准备好事件 System.out.println("Readable"); // 取得选择键对应的通道和套接字 SelectableChannel nextReady = (SelectableChannel) key .channel(); Socket socket = (Socket) key.attachment(); // 处理该事件,处理方法已封装在类ClientChInstance中 this.readFromChannel(socket.getChannel(), (ClientChInstance) this.clientChannelMap .get(socket)); } else if (key.isWritable()) {// 如果是通道写准备好事件 System.out.println("writeable"); // 取得套接字后处理,方法同上 Socket socket = (Socket) key.attachment(); SocketChannel channel = (SocketChannel) socket.getChannel(); // this.writeToChannel(channel, "This is from server!"); this.writeToChannel(channel, data); } } } } // 对通道的写操作 public void writeToChannel(SocketChannel channel, String message) throws IOException { ByteBuffer buf = ByteBuffer.wrap(message.getBytes()); int nbytes = channel.write(buf); } // 对通道的读操作 public void readFromChannel(SocketChannel channel, ClientChInstance clientInstance) throws IOException, InterruptedException { ByteBuffer byteBuffer = null; try{ byteBuffer = ByteBuffer.allocate(BUFFERSIZE); int nbytes = channel.read(byteBuffer); }catch(Exception e){ clientChannelMap.remove(channel.socket()); channel.close(); e=null; return; } byteBuffer.flip(); String result = this.decode(byteBuffer); // 当客户端发出”@exit”退出命令时,关闭其通道 if (result.indexOf("@exit") >= 0||result.indexOf("q")>=0) { channel.close(); } // else if(result.indexOf("@close") >= 0){//关闭服务 // channel.close(); // this.finalize(); // } else { clientInstance.append(result.toString()); // 读入一行完毕,执行相应操作 if (result.indexOf("\n") >= 0) { System.out.println("client input" + result); clientInstance.execute(); } } } // 该类封装了怎样对客户端的通道进行操作,具体实现可以通过重载execute()方法 public class ClientChInstance { SocketChannel channel; StringBuffer buffer = new StringBuffer(); public ClientChInstance(SocketChannel channel) { this.channel = channel; } public void execute() throws IOException { String message = "This is response after reading from channel!"; writeToChannel(this.channel, message); buffer = new StringBuffer(); } // 当一行没有结束时,将当前字窜置于缓冲尾 public void append(String values) { buffer.append(values); } } // 主程序 public static void main(String[] args) { NBServer nbServer = new NBServer(8090); try { nbServer.initialize(); } catch (Exception e) { e.printStackTrace(); System.exit(-1); } try { nbServer.portListening("This is from server!"); } catch (Exception e) { e.printStackTrace(); } } } 我写的客户端: package org.scorpion.scoket; import java.io.OutputStream; import java.net.Socket; public class TCPClient { public static void main(String[] args) throws Exception { Socket s = new Socket("172.22.71.146", 8000); OutputStream os = s.getOutputStream(); byte[] by="ksfsksjfklsdjflsdj".getBytes(); os.write(by); s.close(); } }
Java socket通信
[size=x-small]是从网上找到的聊天程序 有服务器和客户端, 在注册完之后出现[/size][size=medium]java.io.StreamCorruptedException: invalid stream header: 2A2A2A2A[/size] Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Register.register(Register.java:293) at Register.actionPerformed(Register.java:202) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272) at java.awt.Component.processMouseEvent(Component.java:6134) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5899) at java.awt.Container.processEvent(Container.java:2023) at java.awt.Component.dispatchEventImpl(Component.java:4501) at java.awt.Container.dispatchEventImpl(Container.java:2081) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895) at java.awt.Container.dispatchEventImpl(Container.java:2067) at java.awt.Window.dispatchEventImpl(Window.java:2458) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Login.login(Login.java:189) at Login.actionPerformed(Login.java:155) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272) at java.awt.Component.processMouseEvent(Component.java:6134) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5899) at java.awt.Container.processEvent(Container.java:2023) at java.awt.Component.dispatchEventImpl(Component.java:4501) at java.awt.Container.dispatchEventImpl(Container.java:2081) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895) at java.awt.Container.dispatchEventImpl(Container.java:2067) at java.awt.Window.dispatchEventImpl(Window.java:2458) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)[/size]
Java与c++进行Socket通信问题--求帮助
服务器端是C++开发的,Java开发客户端。客户端发送给服务器端的信息服务器那边可以收到,服务器也发出了响应,但是客户端一直阻塞,无法获取数据。不知道大伙能不能分享下这方面的经验。如果有样例程序更好。 在此先行谢过。 [code="java"] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.InetSocketAddress; import java.net.Socket; import java.net.UnknownHostException; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.channels.SocketChannel; public class WhyNotWork { /** * @param args * @throws IOException * @throws UnknownHostException * @throws IOException */ public static void main(String[] args) throws UnknownHostException { String sendString = Header.get() + "hello "; Socket socket = null; try { socket = new Socket("192.168.10.3", 5555); } catch (IOException e) { e.printStackTrace(); } if (socket.isConnected()) { System.out.println("is connected"); } else { return; } PrintWriter writer = null; BufferedReader reader = null; try { writer = new PrintWriter(socket.getOutputStream()); reader = new BufferedReader(new InputStreamReader(socket .getInputStream())); writer.println(sendString.getBytes()); writer.flush(); char[] buffer = new char[1024]; while (reader.read(buffer) != -1) { System.out.println(new String(buffer)); } } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } if (writer != null) { writer.close(); } if (socket != null) { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } } [/code]
有关客户端与服务器端通信的问题
写了一段服务器端和客户端通信代码,实现以下功能:客户端将文件发送到服务器端,服务器端接收完文件后给客户端发送一个消息。 运行代码后出现以下问题不知如何神马原因: 客户端文件可以正确地传到服务器端,但是服务器端接收完文件后发送给客户端地确认消息,客户端收不到,报java.net.SocketException: Socket is closed的异常,请各位帮忙看看 客户端代码 package client; import java.io.*; import java.net.*; public class ClientThread extends Thread{ private int hostPort=3000; protected BufferedReader socketReader; protected PrintWriter socketWriter; private BufferedReader streamReader; public ClientThread(){ setUpConnection(); } public void setUpConnection() { try { Socket client = new Socket("127.0.0.1", hostPort); //socketWriter = new PrintWriter(client.getOutputStream()); InputStream inputFromSocket = client.getInputStream(); streamReader = new BufferedReader( new InputStreamReader(inputFromSocket)); handleConnection(client); } catch (UnknownHostException e) { System.out.println("Error setting up socket connection: unknown host"); } catch (IOException e) { System.out.println("Error setting up socket connection: " + e); } } public void handleConnection(Socket client) { try { File file=new File("a.txt"); FileReader fileReader = new FileReader(new File("a.txt")); BufferedReader bufferedFileReader = new BufferedReader(fileReader); PrintWriter streamWriter = new PrintWriter( client.getOutputStream()); String line = null; while ((line = bufferedFileReader.readLine()) != null) { streamWriter.println(line); } fileReader.close(); streamWriter.close(); //////读取服务器收到文件后的返回内容 String str=streamReader.readLine(); while(str!=null){ System.out.println(str); } } catch (Exception e) { System.out.println("Error handling a client: " + e); } } } 服务器端代码 import java.net.*; import java.io.*; public class ServerThread extends Thread{ private int listenPort = 3000; public ServerThread(){ acceptConnections(); } public void acceptConnections() { try { ServerSocket server = new ServerSocket(listenPort); Socket incomingConnection = null; while (true) { incomingConnection = server.accept(); handleConnection(incomingConnection); } } catch (BindException e) { System.out.println("Unable to bind to port " + listenPort); } catch (IOException e) { System.out.println("Unable to instantiate a ServerSocket on port: " + listenPort); } } public void handleConnection(Socket incomingConnection) { try { BufferedReader socketReader = new BufferedReader( new InputStreamReader(incomingConnection.getInputStream())); String line = null; while ((line = socketReader.readLine()) != null) { //streamWriter.println(line); System.out.println(line); } socketReader.close(); /////////接受完服务器发送的文件后给客户端 OutputStream os=incomingConnection.getOutputStream(); os.write("".getBytes()); } catch (Exception e) { System.out.println("Error handling a client: " + e); } } }
Socket编程,为什么客户端无法接收来自服务器的数据?
如题,我写了段Socket服务器\客户端通讯的程序,服务端能接收到客户端的数据,但是客户端就无法接收到服务端传回的数据,代码如下 Server端 [code="java"] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; /** * @author Think * */ public class SocketServer { /** * @param args */ public static void main(String[] args) { new SocketServer().start(); } public void start(){ try { ServerSocket server = new ServerSocket(10086); while(true){ System.out.println("Waiting for a client..."); Socket client = server.accept(); new SocketServerThread(client).start(); } } catch (IOException e) { e.printStackTrace(); } } class SocketServerThread extends Thread{ Socket client = null; public SocketServerThread(Socket client){ this.client = client; } @Override public void run(){ try { // 得到CLIENT的输入流,从输入流出取出传输的数据 BufferedReader reader_from_client = new BufferedReader(new InputStreamReader(client.getInputStream())); String line = null; System.out.print("from client message:"); while((line = reader_from_client.readLine()) != null){ System.out.println(line); } // 得到CLIENT端的输入流,通过向CLIENT传输数据 PrintWriter writer_to_client = new PrintWriter(client.getOutputStream()); writer_to_client.println("Ok"); writer_to_client.flush(); reader_from_client.close(); writer_to_client.close(); client.close(); } catch (IOException e) { } } } } [/code] Client [code="java"]import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; /** * @author Think * */ public class SocketClient { /** * @param args */ public static void main(String[] args) { try { Socket remoteServer = new Socket(InetAddress.getLocalHost(), 10086); // 得到SERVER端SOCKET的输出流,通过向输出流写入数据,与SERVER进行通信 PrintWriter write_to_server = new PrintWriter(remoteServer.getOutputStream(), true); write_to_server.write("Hello, what's you name?"); write_to_server.flush(); // 把下面这几行放开,SERVER端就收不到数据了,一直处于阻塞状态 // 得到SERVER端的输出流,从输出流中读取从SERVER传递来的数据 // BufferedReader reader_from_server = new BufferedReader(new InputStreamReader(remoteServer.getInputStream())); // String line = null; // while((line = reader_from_server.readLine()) != null){ // System.out.println(line); // } // reader_from_server.close(); write_to_server.close(); remoteServer.close(); } catch (IOException e) { e.printStackTrace(); } } }[/code] 如果Client中的说明,只要是Client中放开了 [code="java"] BufferedReader reader_from_server = new BufferedReader(new InputStreamReader(remoteServer.getInputStream())); String line = null; while((line = reader_from_server.readLine()) != null){ System.out.println(line); } reader_from_server.close(); [/code] 这段代码,SERVER就阻塞在 [code="java"] while((line = reader_from_client.readLine()) != null){ [/code] 这行,不知道是哪个环节理解或处理错了,还望大家指点指点!
socket server 启动问题
tomcat起不来, web.xml配置为: <servlet> <servlet-name>socket</servlet-name> <servlet-class>servlet.SocketServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> SocketServlet类: public class SocketServlet extends HttpServlet{ public void init(ServletConfig cfg) throws ServletException { super.init(cfg); new SocketServer(); } } socket server 服务器端代码如下: public class SocketServer { // 该服务器的端口号 final int RECEIVE_PORT = 4447; // ReceiveServer的构造器 public SocketServer() { ServerSocket serverSocket = null; //ServerSocket的实例 Socket request = null; //用户请求的套接字 Thread receiveThread = null; //需启动的线程 try { // 初始化ServerSocket serverSocket = new ServerSocket(RECEIVE_PORT); while (true) { // 等待用户请 request = serverSocket.accept(); // 接收客户机连接请求 receiveThread = new ServerThread(request); // 生成serverThread的实例 receiveThread.start(); // 启动serverThread线程 } } catch (IOException e) { System.out.println(e.getMessage()); System.exit(0); } } } class ServerThread extends Thread { // 用户连接的通信套接字 Socket clientRequest; // serverThread的构造器 public ServerThread(Socket s) { this.clientRequest = s; } // 线程的执行方法 public void run() { try { DataInputStream input = new DataInputStream(clientRequest.getInputStream()); DataOutputStream output = new DataOutputStream(clientRequest.getOutputStream()); //客户端请求传过来的String(这里是可以的,能收到客户端请求的String) String paraInfoXML = input.readUTF(); /*返回结果*/ String result = "" ; SAXReader reader=new SAXReader(); StringReader sr=new StringReader(paraInfoXML); org.xml.sax.InputSource is=new org.xml.sax.InputSource(sr); try { Document doc=reader.read(is); /*业务逻辑*/ } catch (DocumentException e) { e.printStackTrace(); } output.writeUTF(result); output.flush(); output.close(); input.close(); clientRequest.close(); } catch (IOException e) { e.printStackTrace(); } } }
java同台计算机两程序交互
<p>有两个程序,都为java程序,在同一台机器上运行,在运行时两程序要进行交互,我不知道他们怎样进行通信,希望指点一下,给个思路!(这两个程序的位置是不确定的)</p><br /><strong>问题补充:</strong><br />如果用SOCKET的话,不是就要用服务器嘛? <br />我不想使用服务器,有没有别的方法,比如说,进程是否可以共享?
VS2017,MFC,TCP通信,客户端无法连接调试助手
#1.自己所创建的客户端无法连接调试助手。 自己创建的客户端可以和自己创建的服务器端通信,调试助手连不了自己创建的服务器,自己创建的客户端也连不了调试助手。完全不知道问题出在哪了,, 两个客户端可以同时运行,端口和IP使用情况如下: ![图片说明](https://img-ask.csdn.net/upload/201901/17/1547695891_291269.png) #2.客户端核心代码如下: ##“连接”按钮的时间处理程序。 void CGeoDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 char ipaddress[35]; char port[8]; m_ipaddr.GetWindowText(ipaddress,30); cli.sin_addr.s_addr = inet_addr(ipaddress); cli.sin_family = AF_INET; cli.sin_port = m_ter.GetWindowText(port,8); //htons(5000); //创建socket clisock = socket(AF_INET, SOCK_STREAM, 0); //启动线程 ee = 1; AfxBeginThread(thread, 0); } ##线程AfxBeginThread()代码如下 UINT thread(LPVOID v) { char buff[100]; char array[25][30] = { "155.245.160.151", "155.245.160.152", "155.245.160.153", "155.245.160.154", "155.245.160.155", "155.245.160.156", "155.245.160.157", "155.245.160.158", "155.245.160.159", "155.245.160.160", "155.245.160.161", "155.245.160.162", "155.245.160.163", "155.245.160.164", "155.245.160.165", "155.245.160.166", "155.245.160.167", "155.245.160.168", "155.245.160.169", "155.245.160.170", "155.245.160.171", "155.245.160.172", "155.245.160.173", "155.245.160.174", "155.245.160.171" }; /*CSize size; size.cx = 0; size.cy = 30;*/ int s = 1, addcount = 0; CGeoDlg *dlg = (CGeoDlg*)AfxGetApp()->GetMainWnd(); dlg->m_connect.EnableWindow(FALSE); dlg->m_disconnect.EnableWindow(TRUE); //连接到服务器 while (connect(dlg->clisock, (sockaddr*)&(dlg->cli), sizeof(dlg->cli)) && dlg->ee != 0) { dlg->m_edit.SetWindowText("等待....."); //空循环 for (int i = 0; i <= 65000; i++) for (int j = 0; j <= 200; j++); if (addcount == 25) addcount = 0; dlg->cli.sin_addr.s_addr = inet_addr(array[addcount++]); } if (dlg->ee == 1) dlg->m_edit.SetWindowText( "连接成功"); //dlg->m_button1.EnableWindow(TRUE); dlg->SetForegroundWindow(); //循环获得数据 /*while (s != SOCKET_ERROR && dlg->ee != 0) { //调用recv函数接收数据 s = recv(dlg->clisock, buff, 100, 0); dlg->SetForegroundWindow(); if (s != SOCKET_ERROR && dlg->ee != 0) dlg->m_list.InsertItem(dlg->count++, buff); dlg->m_list.Scroll(size); }*/ //发送断开命令 send(dlg->clisock, "Disconnected", 100, 0); //dlg->m_button1.EnableWindow(FALSE); dlg->m_connect.EnableWindow(TRUE); dlg->m_disconnect.EnableWindow(FALSE); closesocket(dlg->clisock); AfxEndThread(0); return 0; } #3.完全不知到问题在哪 非计算机类专业,当时也没认真学,现在急着解决问题,实在不知道该怎么办了,,,
网络编程中阻塞式IO的真正含义到底是什么
这两天在看socket编程,可以说这方面是个新手,其中看到了nio,网上有很多文章介绍了nio相对于多线程处理网络链接(每建立一个socket链接,服务器便会开启一个线程来对此socket单独处理和客户端的通信)的优点。因为nio是事件驱动,不会发生Socket读取流数据时的阻塞。我想问的是这里所说的读取流数据的阻塞是我们平时所说的线程进入阻塞态吗? 当一个线程单独处理一个客户端请求时,它需要等待客户端向它的输出流写入数据,完后服务器端处理此socket的线程才能读取数据,如果客户端未写入数据,那么服务器端线程便会一直停留在对流的读取状态,即调用流的read()方法,我感到疑惑的是当客户端未写入数据而服务器端正在进入read()读取数据时,服务器端处理的这个线程是由运行态进入阻塞态了还是说一直在read()方法循环检测流中的数据(这样的话线程仍然在运行态),网上的很多表达让我对它们产生了很大的疑惑,关于网络中流的读取写入本人还是个新手,这可能涉及到更底层的一些东西,希望有人能够给指点一下。 我也看了java的源码,当流读取时,是进入一个 for(;;)的死循环。所以我认为是这个线程并没有进入阻塞态,而是一直循环在检测输入流的数据,一旦有数据便会从read()返回,不知道理解的对还是不对? 以下是服务器端的代码: [code="java"] import java.io.*; import java.net.*; public class Server{ public static void main(String args[]) { ServerSocket server=null; try{ server=new ServerSocket(4700); //创建一个ServerSocket在端口4700监听客户请求(已经建立监听) }catch(Exception e) { System.out.println("can not listen to:"+e); //出错,打印出错信息 } Socket socket=null; try{ while(true){ socket=server.accept(); //使用accept()阻塞等待客户请求, //请求到来则产生一个Socket对象,并继续执行 Thread t = new Thread(new Processor(socket)); t.start(); } }catch(Exception e) { System.out.println("Error."+e); } } } class Processor implements Runnable{ private Socket socket; public Processor(Socket socket){ this.socket = socket; } public void run() { try{ String line; BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream())); //由Socket对象得到输入流,并构造相应的BufferedReader对象 PrintWriter os=new PrintWriter(socket.getOutputStream()); //由Socket对象得到输出流,并构造PrintWriter对象 BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); //由系统标准输入设备构造BufferedReader对象 System.out.println("Client:"+is.readLine()); //在标准输出上打印从客户端读入的字符串 line=sin.readLine(); //从标准输入读入一字符串 while(!line.equals("bye")){ //如果该字符串为 "bye",则停止循环 os.println(line); //向客户端输出该字符串 os.flush(); //刷新输出流,使Client马上收到该字符串 System.out.println("Server:"+line); //在系统标准输出上打印读入的字符串 System.out.println("Client:"+is.readLine()); //从Client读入一字符串,并打印到标准输出上 line=sin.readLine(); //从系统标准输入读入一字符串 } //继续循环 os.close(); //关闭Socket输出流 is.close(); //关闭Socket输入流 socket.close(); //关闭Socket }catch(Exception e){ e.printStackTrace(); } } }[/code]
非阻塞通信的问题
运行服务器后,在运行客户端, 服务器就挂了, 然后客户端一直循环显示 客户端可读... 客户端可写... 客户端可读... 客户端可写... 客户端可读... 客户端可写... 服务器端显示 Serve 启动了! 服务器端接收到连接... Exception in thread "main" 客户端信息/192.168.1.76:4634 java.nio.channels.IllegalBlockingModeException at java.nio.channels.spi.AbstractSelectableChannel.register(Unknown Source) at nonblock.MyServer.server(MyServer.java:40) at nonblock.MyServer.main(MyServer.java:55) 请问这是怎么回事啊? 谢谢了啊 这个是服务器端的代码 [code="java"]package nonblock; import java.io.*; import java.nio.*; import java.nio.channels.*; import java.nio.charset.*; import java.net.*; import java.util.*; public class MyServer { private ServerSocketChannel ssc ; private Selector selector ; private int port = 8000; private Charset charset ; public MyServer() throws IOException{ selector = Selector.open(); ssc = ServerSocketChannel.open(); ssc.socket().setReuseAddress(true); ssc.configureBlocking(false); ssc.socket().bind(new InetSocketAddress(port)); System.out.println("Serve 启动了!"); } public void server() throws IOException{ ssc.register(selector, SelectionKey.OP_ACCEPT); while(selector.select()>0){ Set keySet = selector.selectedKeys(); Iterator iter = keySet.iterator(); while(iter.hasNext()){ SelectionKey key = (SelectionKey)iter.next(); //一定要remove,否则会一直存在 iter.remove(); if(key.isAcceptable()){ ServerSocketChannel s = (ServerSocketChannel)key.channel(); SocketChannel sc = (SocketChannel)s.accept(); System.out.println("服务器端接收到连接..."); System.out.println("客户端信息"+sc.socket().getLocalAddress()+":"+sc.socket().getPort()); ByteBuffer buffer = ByteBuffer.allocate(1024); sc.register(selector, SelectionKey.OP_READ|SelectionKey.OP_WRITE, buffer); System.out.println("服务器完成注册..."); } if(key.isReadable()){ System.out.println("服务器端可以读取信息..."); } if(key.isWritable()){ System.out.println("服务器端可以写入信息..."); } } } } public static void main(String[] arg){ try { new MyServer().server(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } [/code] 这个是客户端的代码 [code="java"]package nonblock; import java.net.*; import java.nio.channels.*; import java.nio.*; import java.io.*; import java.nio.charset.*; import java.util.*; public class MyClient { private SocketChannel socketChannel = null; private ByteBuffer sendBuffer = ByteBuffer.allocate(1024); private ByteBuffer receiveBuffer = ByteBuffer.allocate(1024); private Charset charset = Charset.forName("GBK"); private Selector selector; public MyClient() throws IOException { socketChannel = SocketChannel.open(); InetAddress ia = InetAddress.getLocalHost(); InetSocketAddress isa = new InetSocketAddress(ia, 7676); socketChannel.connect(isa); socketChannel.configureBlocking(false); System.out.println("与服务器的连接建立成功"); selector = Selector.open(); } public static void main(String args[]) throws IOException { final MyClient client = new MyClient(); // Thread receiver = new Thread() { // public void run() { // client.receiveFromUser(); // } // }; // // receiver.start(); client.talk(); } private void talk() throws IOException { // TODO Auto-generated method stub socketChannel.register(selector, SelectionKey.OP_READ | SelectionKey.OP_WRITE); while(selector.select()>0){ Set keySet = selector.selectedKeys(); Iterator iter = keySet.iterator(); while(iter.hasNext()){ SelectionKey key = (SelectionKey)iter.next(); iter.remove(); if(key.isReadable()){ System.out.println("客户端可读..."); } if(key.isWritable()){ System.out.println("客户端可写..."); } } } } } [/code]
nio问题
想请教大家的看法? 不知道有没有人使用nio做过网络通信。 我以前是使用普通的阻塞socket做java通信的。 通常的做法是客户端 和 服务器 定义好格式。 然后发送 消息。 两边在互相编解码消息。 最近在学习nio。 但是我发现一个问题。 就是nio的写。 比如 我不间断的调用 [code="java"] while (true) { try { // Thread.sleep((long) (Math.random() * 1000)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } for (SocketChannel client : sendSocketList) { if (client.isConnected()) { try { client.write(ByteBuffer.wrap(("随机回复: " + count .addAndGet(1)).getBytes("UTF-8"))); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } [/code] 这样会导致 对端读取到的消息格式不是合法的。 可能在一次读操作中。读取到了多次写入的信息。 但是如果采用原始的阻塞IO通信。 不管你如何连续的写入消息。 在对端读取到的都是你单次写入的内容。 不会读取到多次写入的内容。 我有个疑问。 要如何解决这个问题呢?
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
【JSON解析】浅谈JSONObject的使用
简介 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于机器解析和生成、易于理解、阅读和撰写,而且Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言。 JSON建构于两种结构: “名称/值”对的集合(A Collection of name/va...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
只因接了一个电话,程序员被骗 30 万!
今天想给大家说一个刚刚发生在我身边的一起真实的诈骗经历,我的朋友因此被骗走30万。注:为了保护当事人隐私,部分情节进行了修改。1平安夜突来的电话开始以为就像普通的诈骗一样,想办法让你把钱...
我一个37岁的程序员朋友
周末了,人一旦没有点事情干,心里就瞎想,而且跟几个老男人坐在一起,更容易瞎想,我自己现在也是 30 岁了,也是无时无刻在担心自己的职业生涯,担心丢掉工作没有收入,担心身体机能下降,担心突...
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me for a ...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
【程序人生】程序员接私活常用平台汇总
00. 目录 文章目录00. 目录01. 前言02. 程序员客栈03. 码市04. 猪八戒网05. 开源众包06. 智城外包网07. 实现网08. 猿急送09. 人人开发10. 开发邦11. 电鸭社区12. 快码13. 英选14. Upwork15. Freelancer16. Dribbble17. Remoteok18. Toptal19. AngelList20. Topcoder21. ...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
立即提问