Java Socket编程实例(一)

网友投稿 171 2023-07-14


Java Socket编程实例(一)

一.服务端代码:

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();

DPLwbB 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 */

}

}

二.客户端代码:

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.lhttp://ength - totalBytesRcvd)) == -1)

throw new SocketException("Connection closed prematurely");

totalBytesRcvd += bytesRcvd;

} // data array is full

System.out.println(DPLwbB"Received: " + new String(data));

socket.close(); // Close the socket and its streams

}

}

上述代码的TCP服务端是单线程,一次只能服务一个客户端。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java Socket编程实例(五)
下一篇:Java BigDecimal类的使用和注意事项
相关文章

 发表评论

暂时没有评论,来抢沙发吧~