Server 端
1.创建ServerSocket类,绑定指定端口,端口号大于1024(否则需要root权限启动)。
2.调用serverSocket类的accept()方法实现端口监听
3.初始化输入输出流out in
4.循环收发数据
5.关闭流和套接字
Client端
1.创建Socket类,绑定host和端口号
2.初始化输入输出流
3.循环收发数据
4.关闭流
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket(5555);
Socket socket=serverSocket.accept();
System.out.println(socket);
PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message=null;
while((message=in.readLine())!=null){
System.out.println("收到:"+message);
out.println(message.toUpperCase());
out.flush();
}
//关闭连接
in.close();
out.close();
socket.close();
serverSocket.close();
}
}
/**
* 单线程TCP通讯 实现echo服务器
*/
public class Client {
public static void main(String[] args) throws IOException {
Logger logger= org.apache.log4j.Logger.getLogger(Client.class);
Socket socket=new Socket("localhost",5555);
System.out.println(socket);
PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader stdIn=new BufferedReader(new InputStreamReader(System.in));
String inMessage=null;
while((inMessage=stdIn.readLine())!=null){
out.println(inMessage);
System.out.println("Server return:"+in.readLine());
// in.reset();
out.flush();
}
in.close();
out.close();
stdIn.close();
socket.close();
}
}