这里实现一个简单的服务器端与客户端通信的例子。
客户段发送消息,服务器端接收并打印
服务器端发送消息,客户端接收并打印
服务器端:
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public void read() throws IOException {
ServerSocket ss=new ServerSocket(11111);//设置端口11111
System.out.println("waiting for client");
Socket socket=ss.accept();//监听11111端口是否有客户端连接
Reader reader=new InputStreamReader(socket.getInputStream());//reader读取客户端发送的消息
String msg;
StringBuilder builder=new StringBuilder();
while((msg=String.valueOf(reader.read()))!=null) {
builder.append(msg);//所有消息拼接到一起
}
reader.close();//记得关闭io流,释放资源
socket.close();//关闭socket
ss.close();//关闭serversocket
System.out.println(builder);//打印接收到的客户端消息
}
public static void main(String[] args) throws IOException {
Server server=new Server();
server.read();
}
}
客户端:
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public void read() throws UnknownHostException, IOException {
Socket socket=new Socket("172.22.56.58", 11111);//新建本机IP地址,连接端口11111
Writer writer=new OutputStreamWriter(socket.getOutputStream());
writer.write("hey there")//写消息
writer.flush();//冲刷消息,发送给服务器
writer.close()//关闭IO流
socket.close();//关闭端口
}
public static void main(String[] args) throws UnknownHostException, IOException {
new Client().read();
}
}
后续再写一篇多线程的实现。