作者微信 bishe2022

代码功能演示视频在页面下方,请先观看;如需定制开发,联系页面右侧客服
Java Socket 通过TCP交互 实例

Custom Tab

 Client:

package com.mahoutchina.java.socket.client;  
  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  
import java.net.Socket;  
import java.net.SocketException;  
import java.net.UnknownHostException;  
  
public class TCPEchoClient {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        if (args.length < 2 || (args.length > 3)) {  
            throw new IllegalArgumentException(  
                    "Parameter(s):<Server> <Word>[<Port>]");  
        }  
  
        String server = args[0];// server name or IP address  
        // Convert argument string to bytes using the default character encoding  
        String sendData=args[1];  
        System.out.println("Data to sent:"+ sendData);  
        byte[] data = sendData.getBytes();  
        int servPort = (args.length == 3) ? Integer.parseInt(args[2]) : 7;  
        System.out.println("Server port:"+servPort);  
          
        // create socket that is connected to server on specified port  
        Socket socket = null;  
        try {  
            socket = new Socket(server, servPort);  
              
            System.out.println("Connected to server ... sending echo string");  
  
            InputStream in = socket.getInputStream();  
            OutputStream out = socket.getOutputStream();  
            out.write(data);  
  
            // receive  
            int totalBytesRcvd = 0;// total bytes received so far  
            int bytesRcvd;// Bytes received in last read  
  
            while (totalBytesRcvd < data.length) {  
                bytesRcvd = in.read(data, totalBytesRcvd, data.length  
                        - totalBytesRcvd);  
                if (bytesRcvd == -1) {  
                    throw new SocketException("Connection closed prematurely");  
                }  
                totalBytesRcvd += bytesRcvd;  
            }  
            System.out.println("Received:" + new String(data));  
  
        } catch (UnknownHostException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                if (socket != null) {  
                    socket.close();  
                }  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
  
    }  
  
}

服务器端:

package com.mahoutchina.java.socket.server;  
  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  
import java.net.ServerSocket;  
import java.net.Socket;  
import java.net.SocketAddress;  
  
public class TCPEchoServer {  
  
    //Size of receive buffer  
    private static final int BUFSIZE=32;  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        //Test for correct # of args  
        if(args.length!=1){  
            throw new IllegalArgumentException("Parameter(s):<Port>");  
        }  
        int servPort = Integer.parseInt(args[0]);  
          
        //Create a server socket to accept client connection request  
        ServerSocket servSocket =null;  
        int recvMsgSize=0;  
        byte[] receivBuf=new byte[BUFSIZE];  
          
        try {  
            servSocket=new ServerSocket(servPort);  
            while(true){  
                Socket clientSocket=servSocket.accept();  
                SocketAddress clientAddress = clientSocket.getRemoteSocketAddress();  
                System.out.println("Handling client at "+ clientAddress);  
                  
                InputStream in =clientSocket.getInputStream();  
                OutputStream out= clientSocket.getOutputStream();  
                  
                //receive until client close connection,indicate by -l return  
                while((recvMsgSize=in.read(receivBuf))!=-1){  
                    String receivedData=new String(receivBuf.toString());  
                    System.out.println(receivedData);  
                    out.write(receivBuf, 0, recvMsgSize);  
                }  
                clientSocket.close();  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
          
  
    }  
  
}

  运行:

  先运行server client,配置的参数为9999

  

Handling client at /192.168.1.117:50128

helloEcho


  运行client,参数:localhost helloEcho 999

  

Data to sent:helloEcho

Server port:9999

Connected to server ... sending echo string

Received:helloEcho

转载自:http://blog.csdn.net/hintcnuie/article/details/11073815

Home