java socket编程—单客户端与服务器通信
实现简单的服务器程序
package Socket; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class EchoServer { public static void main(String[] args) { try { //建立服务器端Socket,监听8189端口 ServerSocket s = new ServerSocket(8189); //等待客户端的访问 Socket incoming = s.accept(); try{ //从“客户端”Socket对象读字节流 InputStream inStream = incoming.getInputStream(); //向“客户端”Socket对象写字节流 OutputStream outStream = incoming.getOutputStream(); //将读出来的数据封装成Scanner对象 Scanner in = new Scanner(inStream); //封装输出流 PrintWriter out = new PrintWriter(outStream,true); //接收到客户端的请求,输出"Hello! Enter Bye to exit." out.println("Hello! Enter BYE to exit."); //解析客户端的输入,然后做出回应 boolean done = false; while(!done&&in.hasNext()) { String line = in.nextLine(); out.println("Echo:"+line); if(line.trim().equals("BYE")) done=true; } } finally{ //关闭客户端的Socket incoming.close(); } } catch (IOException e) { e.printStackTrace(); } } }
然后在cmd下 使用telnet 127.0.0.1 8189 进行测试。
1.ServerSocket(int port)
创建一个监控端口的服务器Socket
2.Socket accept() 等待连接。
该方法阻塞当前线程直到建立连接为止。该方法返回一个Socket对象。程序可以通过这个对象与连接中的客户端进行通信。
3.void close()
关闭服务器套接字