通信流程:
通信流程:
1.通信双方建立套接字
2.服务端启动套接字,等待客户端连接
3.可客户端发起连接,双方建立通道
4.收发数据
5.关闭资源
public class TalkClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("127.0.0.1", 4700);
//键盘输入
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
//套接字输出流
PrintStream os = new PrintStream((socket.getOutputStream()));
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String readline = sin.readLine();
while(!readline.equals("bye")){
os.println(readline);
os.flush();
System.out.println("Client: " + readline);
System.out.println("Server: " + is.readLine());
readline = sin.readLine();
}
os.close();
is.close();
socket.close();
} catch (IOException e) {
System.out.println("Error: " + e);
}
}
}
public class TalkServer {
public static void main(String[] args) {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(4700);
} catch (IOException e) {
System.out.println("can not listen to: " + e);
}
Socket socket = null;
try {
socket = serverSocket.accept();
} catch (IOException e) {
System.out.println("Error. " + e);
}
String line;
try {
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter os = new PrintWriter(socket.getOutputStream());
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Client: " + is.readLine());
line = sin.readLine();
while (!line.equals("bye")){
os.println(line);
os.flush();
System.out.println("Server: " + line);
System.out.println("Client: " + is.readLine());
line = sin.readLine();
}
os.close();
is.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}