1 服务端实现的是通过系统输入后向客户端打印数据,如果打印的数据内容为bye则结束线程
服务端的代码如下:
package com.sun.net;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 类名: OneThreadSocketServer
* 包名: com.sun.net
* 作者: Administrator
* 时间: 2015年1月26日 上午9:17:38
* 描述:
*/
public class OneThreadSocketServer {
private int port = 10000;
private ServerSocket server;
public OneThreadSocketServer() throws Exception{
server = new ServerSocket(port);
}
public BufferedReader getReader(Socket socket) throws Exception{
return new BufferedReader(new InputStreamReader(System.in));
}
public PrintWriter getWriter(Socket socket) throws Exception{
return new PrintWriter(socket.getOutputStream());
}
public void talk(){
try {
Socket socket = server.accept();
BufferedReader br = getReader(socket);
PrintWriter pw = getWriter(socket);
String msg = null;
while(true){
msg = br.readLine();
pw.println(msg);
pw.flush();
if(msg.trim().equals("bye"))break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
new OneThreadSocketServer().talk();
}
}
2 客户端: 客户端通过从输入流中读取数据,通过bufferedReader按行读取出来打印,如果读取出来的结果为bye则结束客户端
客户端代码为:
package com.sun.net;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket;
/**
* 类名: OneThreadSocketClient
* 包名: com.sun.net
* 作者: Administrator
* 时间: 2015年1月26日 上午9:17:19
* 描述:
*/
public class OneThreadSocketClient {
private String serverIp;
private int port;
private Socket socket;
public OneThreadSocketClient(){
serverIp = "192.168.1.103";
port = 10000;
}
public BufferedReader getReader(Socket socket) throws Exception{
return new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
public void speak(){
try {
socket = new Socket(serverIp,port);
BufferedReader br = getReader(socket);
String msg = null;
while(true){
msg = br.readLine();
System.err.println(msg);
if(msg.trim().equals("bye"))break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new OneThreadSocketClient().speak();
}
}