一. 服务端代码 :
Импорт java.net.*; // для розетки, серверкета и inetAdsress импорт java.io.*; // для ioException и input/outputStream public class tcpechoserver {private static final int bufsize = 32; // размер получения буфера Public Static void Main (String [] args) бросает ioException {int servort = 5500; // Создание сокета сервера, чтобы принять запросы на подключение клиента Serversocket servsock = new Serversocket (Servport); int recvmsgsize; // размер полученного сообщения byte [] recembuf = new Byte [bufsize]; // получение буфера while (true) {// запустить навсегда, принимая и обслуживание соединений сокет clntsock = servsock.accept (); // Получить клиентское соединение SocketAddress clientAddress = clntsock.getRemoteSocketAddress (); System.out.println ("Обработка клиента в" + clientAddress); InputStream in = clntsock.getInputStream (); OutputStream out = clntsock.getOutputStream (); // получение до тех пор, пока клиент не закрывает соединение, указанное -1 возврата while (((recvmsgsize = in.read (ceatherbuf))! = -1) {out.write (chectebuf, 0, Recvmsgsize); } clntsock.close (); // закройте розетку. Мы закончили с этим клиентом! } / * Не достигнут * /}}二. 客户端代码 :
Импорт java.net.*; импортировать java.io.*; открытый класс tcpechoclient {public static void main (string [] args) выбрасывает ioException {String server = "127.0.0.1"; // имя сервера или IP -адрес int servort = 5500; //// Byte Byte [] data = "hi, world" .getbytes (); // Создать сокет, который подключен к серверу на указанном сокете порта сокет = новый сокет (сервер, сервис); System.out.println ("подключен к серверу ... отправка echo String"); InputStream in = socket.getInputStream (); OutputStream out = socket.getOutputStream (); out.write (data); // Отправляем кодируемую строку на сервер // Получить ту же строку обратно с сервера int totalbytesrcvd = 0; // общее количество байтов, полученных до сих пор int bytesrcvd; // байты, полученные в последнем чтении, в то время как (totalbytesrcvd <data.length) {if (((bytesrcvd = in.read (data, totalbytesrcvd, data.length - totalbytesrcvd)) == -1) бросить новое сочетание («Соединение закрыто»); totalbytesrcvd += bytesrcvd; } // массив данных является полной system.out.println ("Получен:" + new String (data)); Socket.Close (); // закрыть розетку и его потоки}}上述代码的 TCP 服务端是单线程 , 一次只能服务一个客户端。
查看更多 Java 的语法 , : : 《мышление в Java 中文手册》、《 JDK 1,7 参考手册官方英文版》、《 JDK 1.6 API Java 中文参考手册》、《 JDK 1,5 API Java 中文参考手册》 , 也希望大家多多支持武林网。