import java.net.*; import java.io.*; import java.lang.Integer; public class GreetingServer extends Thread { private ServerSocket serverSocket; public GreetingServer(int port) throws IOException { serverSocket = new ServerSocket(port); //serverSocket.setSoTimeout(10000); } public void run() { while(true) { try { System.out.println("等待远程连接,端口号为:" + serverSocket.getLocalPort() + "..."); //阻塞等待客户端链接 Socket server = serverSocket.accept(); System.out.println("远程主机地址:" + server.getRemoteSocketAddress()); //初始化输入输出流,获取客户端发送的数据 DataInputStream in = new DataInputStream(server.getInputStream()); //打印客户端发送的数据 System.out.println(in.readUTF()); String ttt = new String(in.readUTF()); //初始化输入流 DataOutputStream out = new DataOutputStream(server.getOutputStream()); //向客户机发送消息 out.writeUTF(ttt); //关闭套接字 server.close(); }catch(SocketTimeoutException s) { //超时退出 System.out.println("Socket timed out!"); break; }catch(IOException e) { //错误信息 e.printStackTrace(); break; } } } public static void main(String [] args) { int port = Integer.parseInt("9991"); try { Thread t = new GreetingServer(port); t.run(); }catch(IOException e) { e.printStackTrace(); } } }
客户端列子
// 文件名 GreetingClient.java import java.net.*; import java.io.*; public class GreetingClient { public static void main(String [] args) { //定义链接的地址和端口号 String serverName = "127.0.0.1"; int port = Integer.parseInt("9991"); try { //链接到服务器 System.out.println("连接到主机:" + serverName + " ,端口号:" + port); Socket client = new Socket(serverName, port); //获取远程主机地址和端口号: System.out.println("远程主机地址:" + client.getRemoteSocketAddress()); //初始化客户端输出流 OutputStream outToServer = client.getOutputStream(); //初始化客户端发送输出流 DataOutputStream out = new DataOutputStream(outToServer); //客户机发送信息给服务端 out.writeUTF("我是来自客户端1的信息,收到请回答"); //初始化服务端输入流 InputStream inFromServer = client.getInputStream(); //获取服务端响应输入流 DataInputStream in = new DataInputStream(inFromServer); //打印服务端返回信息 System.out.println("服务器响应: " + in.readUTF()); client.close(); }catch(IOException e) { e.printStackTrace(); } } }