Socket例子

 Socket服务端代码如下:

 package com.socket.server; import java.net.ServerSocket; import java.net.Socket; public class SocketServer { public SocketServer() { try { ServerSocket server = null; try { // 启动一个ServerSocket,监听7100端口 server = new ServerSocket(7100); System.out.println("Server has started."); System.out.println("Server is waiting for data from Client."); // 这里代码会堵塞,等待Client的Socket连接 Socket socket = server.accept(); // 当收到有客户端连接就会启动下面的线程 new ServerThread(socket).start(); } catch (Exception e) { System.out.println("Can not listen to. " + e); } } catch (Exception e) { System.out.println("Error. " + e); } } public static void main(String[] args) { new SocketServer(); } }

package com.socket.server; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class ServerThread extends Thread { Socket mSocket = null; public static int clientcount = 0; public ServerThread(Socket socket) { mSocket = socket; clientcount++; System.out.println("Server: ClientCount="+clientcount); } public void run() { System.out.println("server accept..."); try { // 从Client端读输入的数据 BufferedReader in = new BufferedReader(new InputStreamReader( mSocket.getInputStream())); // 将数据写到客户端 PrintWriter out = new PrintWriter(mSocket.getOutputStream()); String line = ""; while (!line.equals("bye")) { // 当有数据写入的时候才会往下执行,否则堵塞在这里等待Client端数据 line = in.readLine(); System.out.println("[Server]: reveive " + line); out.println("[processed]:"+line); out.flush(); } System.out.println("Server has closed."); out.flush(); out.close(); in.close(); mSocket.close(); } catch (Exception e) { System.out.println("Error. " + e); } } }

Socket客户端代码

package com.socket.client; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class SocketClient { public SocketClient() { try { // 要连接的Socket服务端地址 Socket socket = new Socket("127.0.0.1", 7100); System.out.println("has connected to service."); // 读取用户输入的流 BufferedReader sysin = new BufferedReader(new InputStreamReader( System.in)); // 向服务端写数据 PrintWriter out = new PrintWriter(socket.getOutputStream()); // 读取服务端传来的数据 BufferedReader in = new BufferedReader(new InputStreamReader( socket.getInputStream())); String line = ""; // 这里会堵塞,等待用户输入. line = sysin.readLine(); while (!line.equals("bye")) { out.println(line); out.flush(); System.out.println("[write to server ]: " + line); System.out.println("[read from server]: " + in.readLine()); line = sysin.readLine(); } System.out.println("[write to server ]: bye"); out.println("bye"); out.flush(); out.close(); in.close(); socket.close(); System.out.println("Client has closed."); } catch (Exception e) { System.out.println("Error. " + e); } } public static void main(String[] args) { new SocketClient(); } }

 

你可能感兴趣的:(thread,exception,String,socket,server,Class)