TCPServer与TCPClient
首先直接来看代码
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
public class TcpClient {
private static final String HOST = "localhost";
private static final int PORT = 9999;
/**
* 基本思路:客户端发送数据-》客户端接收数据
* PrintWriter将对象的格式表示打印到文本输出流
* @param args
*/
public static void main(String[] args) {
try {
Socket socket = new Socket(HOST, PORT);
// 客户端发送数据IO输出流
OutputStream os = socket.getOutputStream();
//autoFlush:JSP页面是否自动刷新
PrintWriter pw = new PrintWriter(os,true);
// 客户端接收数据IO输入流
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
// 接收控制台输入数据
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String line = sc.nextLine();
pw.println(line);
String content = br.readLine();
System.out.println("rev:"+content);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
}
}
}
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 知识点:socket与ServerSocket
* socket可以使一个应用从网络中读取和写入数据,不同计算机上的两个应用可以通过连接发送和接受字节流,当发送消息时,你需要知道对方的ip和端口,在java中,socket指的是java.net.Socket类。
* 在客户/服务器通信模式中,ServerSocket负责接收客户连接请求,并生成与客户端连接的Socket
* 基本思路:这里模拟的是同一个IP地址,所以只需要端口号,通过ServerSocket建立起联系,服务端先运行起来,服务端接收数据-》服务端发送数据
*/
public class TcpServer {
private static final int PORT = 9999;
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(PORT);
// while(true) {
Socket socket = server.accept();
// 服务端接收数据IO输入流
InputStream inputStream = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(isr);
// 服务端发送数据IO输出流
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os, true);
String data = null;
while ((data = reader.readLine()) != null) {
System.out.println(data);
pw.println("已经收到数据【"+data+"】");
}
// }
} catch (IOException e) {
e.printStackTrace();
} finally {
}
}
}
错误情况
这里如果直接先运行TCPClient会报错,这里牵扯到了Socket与ServerSocket的知识。