Java实现单个客户端与服务器TCP通信

来源:互联网 发布:paxos算法实现 编辑:程序博客网 时间:2024/05/22 04:56

功能:使用socket实现简单的TCP通信,客户端发送一行数据,服务器echo it back,直到遇到"END"。

参考书:Thinking in Enterprise Java by Bruce Eckel et. Al.

客户端:

import java.net.*;import java.io.*;public class Client {// 服务器开放的端口public static final int PORT = 6000;public static void main(String [] args) throws IOException {// 换成自己模拟服务器的机器IPbyte [] ip = {(byte) (172), (byte) (18), (byte) (217),(byte) (148)};InetAddress addr = InetAddress.getByAddress(ip);System.out.println("addr= " + addr);Socket socket = new Socket(addr, PORT);try {System.out.println("socket= " + socket);BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);for(int i = 0; i < 10; i++) {out.println("howdy " + i);String str = in.readLine();System.out.println(str);}out.println("END");} finally {System.out.println("closing...");socket.close();}}}

服务器:

import java.io.*;import java.net.*;public class Server {public static final int PORT = 6000;public static void main(String[] args) throws IOException {ServerSocket s = new ServerSocket(PORT);System.out.println("Started: " + s);try {//阻塞直到收到连接请求Socket socket = s.accept();try {System.out.println("Connection accepted: " + socket);BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);while(true) {String str = in.readLine();if(str.equals("END"))break;System.out.println("Echoing: " + str);out.println(str);}} finally {System.out.println("closing...");socket.close();}} finally {s.close();}}}


0 0
原创粉丝点击