源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Java Socket编程实例(一)- TCP基本使用

  • 时间:2020-06-28 04:39 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java Socket编程实例(一)- TCP基本使用
[b]一.服务端代码:[/b]
import java.net.*; // for Socket, ServerSocket, and InetAddress 
import java.io.*; // for IOException and Input/OutputStream 
 
public class TCPEchoServer { 
 
  private static final int BUFSIZE = 32; // Size of receive buffer 
 
  public static void main(String[] args) throws IOException { 
 
    int servPort = 5500; 
 
    // Create a server socket to accept client connection requests 
    ServerSocket servSock = new ServerSocket(servPort); 
 
    int recvMsgSize; // Size of received message 
    byte[] receiveBuf = new byte[BUFSIZE]; // Receive buffer 
 
    while (true) { // Run forever, accepting and servicing connections 
      Socket clntSock = servSock.accept(); // Get client connection 
 
      SocketAddress clientAddress = clntSock.getRemoteSocketAddress(); 
      System.out.println("Handling client at " + clientAddress); 
 
      InputStream in = clntSock.getInputStream(); 
      OutputStream out = clntSock.getOutputStream(); 
 
      // Receive until client closes connection, indicated by -1 return 
      while ((recvMsgSize = in.read(receiveBuf)) != -1) { 
        out.write(receiveBuf, 0, recvMsgSize); 
      } 
 
      clntSock.close(); // Close the socket. We are done with this client! 
    } 
    /* NOT REACHED */ 
  } 
} 
[b]二.客户端代码:[/b]
import java.net.*; 
import java.io.*; 
 
public class TCPEchoClient { 
 
  public static void main(String[] args) throws IOException { 
 
    String server = "127.0.0.1"; // Server name or IP address 
    int servPort = 5500; //// Server port 
    byte[] data = "Hi, World".getBytes(); 
 
    // Create socket that is connected to server on specified port 
    Socket 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); // Send the encoded string to the server 
 
    // Receive the same string back from the server 
    int totalBytesRcvd = 0; // Total bytes received so far 
    int bytesRcvd; // Bytes received in last read 
    while (totalBytesRcvd < data.length) { 
      if ((bytesRcvd = in.read(data, totalBytesRcvd, data.length - totalBytesRcvd)) == -1) 
        throw new SocketException("Connection closed prematurely"); 
      totalBytesRcvd += bytesRcvd; 
    } // data array is full 
 
    System.out.println("Received: " + new String(data)); 
    socket.close(); // Close the socket and its streams 
  } 
} 
上述代码的TCP服务端是单线程,一次只能服务一个客户端。 查看更多Java的语法,大家可以关注:《[url=http://shouce.jb51.net/thinkinjava/]Thinking in Java 中文手册[/url]》、《[url=http://shouce.jb51.net/java/jdk1.7en]JDK 1.7 参考手册官方英文版[/url]》、《[url=http://shouce.jb51.net/java/jdk1.6/]JDK 1.6 API java 中文参考手册[/url]》、《[url=http://shouce.jb51.net/java/jdk1.5/]JDK 1.5 API java 中文参考手册[/url]》,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部