[java] java socket 通信基础
对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket。服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。这样就有两个Socket了,客户端和服务端各一个。
对于Socket之间的通信其实很简单,服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。下面来看一些服务端与客户端通信的例子:
1.服务端代码:
package com.xwolf.netty.nio; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; /** * Created by Administrator on 2015/9/3. */ public class ServerSocketIO { private static final int PORT=9898; public static void main(String[] args)throws Exception{ ServerSocket serverSocket = new ServerSocket(PORT); Socket socket= serverSocket.accept(); InputStream ins = socket.getInputStream(); byte[] bytes=new byte[1024]; StringBuffer buffer = new StringBuffer(); int len=0; while((len=ins.read(bytes))!=-1){ buffer.append(new String(bytes),0,len); } System.out.println("客户端内容:"+ buffer.toString()); ins.close(); } }
2.客户端代码:
package com.xwolf.netty.nio; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; /** * Created by Administrator on 2015/9/3. */ public class ClientSocketIO { public static void main(String[] args)throws Exception{ Socket socket = new Socket("localhost",9898); OutputStream ous = socket.getOutputStream(); String text ="Hello Standard IO Socket"; ous.write(text.getBytes()); ous.flush(); ous.close(); } }
先启动服务端,再启动客户端。此处可以设置为从控制台输入。

浙公网安备 33010602011771号