TCP编程分为客户端和服务器端
客户端:
(1) 创建Socket对象
Socket类:此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。
构造方法:
Socket(InetAddress address, int port)
创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
Socket(String host, int port)
创建一个流套接字并将其连接到指定主机上的指定端口号。
(2)获取通道内的输出流对象
public OutputStream getOutputStream( ) 返回此套接字的输出流。(3)通过获取到的输出流写数据
(4)释放Socket对象资源
System.out.println("客户端");
//(1) 创建Socket对象
Socket s=new Socket("172.20.10.12", 20000);
//(2) 获取通道内的输出流对象
OutputStream sout = s.getOutputStream();
//(3)写数据
sout.write("你好".getBytes());
//(4)释放资源
s.close();
服务器端接收数据的流程
1)创建服务器端的ServerSocket对象
ServerSocket:此类实现服务器套接字。服务器套接字等待请求通过网络传入。
2)通过accept()方法监听客户端的连接(阻塞方法)
Socket accept() 侦听并接受到此套接字的连接。
3)通过调用监听客户端的对象来获取通道内的输入流
InputStream getInputStream() 返回此套接字的输入流。
4)读取数据,显示控制台
5)释放资源
System.out.println("服务器端");
// 1)创建服务器端的ServerSocket对象
ServerSocket ss=new ServerSocket(20000);
// 2)通过accept()方法监听客户端的连接(阻塞方法)
Socket s = ss.accept();
// 3)通过调用监听客户端的对象来获取通道内的输入流
InputStream sin = s.getInputStream();
// 4)读取数据,显示控制台
byte[] by=new byte[1024];
int i=sin.read(by);
String str=new String(by,0,i);
System.out.println(str);
客户端通过键盘录入的方法传入数据
//创建Socket对象
Socket s = new Socket("172.20.10.12",30000);
客户端键盘录入数据
//建立字符流键盘录入对象
System.out.println("请录入数据:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//封装字符输出流和通道内的输出流
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
//将键盘录入的数据逐个写入封装的通道内
String str=null;
while((str=br.readLine())!=null){
if("ok".equals(str)) {
System.exit(0);
break;
}
bw.write(str);
bw.newLine();
bw.flush();
}
s.close();
服务器端将受到文件输出到文本文件中
ServerSocket ss=new ServerSocket(30000);
Socket s = ss.accept();
//读取通道内的流
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter bw=new BufferedWriter(new FileWriter("a.txt"));
String str=null;
while((str=br.readLine())!=null) {
bw.write(str);
bw.newLine();
bw.flush();
}
s.close();
客户端以文本文件方式输入
//(1) 创建Socket对象
Socket s=new Socket("172.20.10.12", 40000);
//(2) 获取通道内的输出流对象
BufferedWriter bw=new BufferedWriter(
new OutputStreamWriter(s.getOutputStream()));
//获取文本中的数据
BufferedReader br=new BufferedReader(new FileReader("a.txt"));
String str=null;
while((str=br.readLine())!=null) {
bw.write(str);
bw.newLine();
bw.flush();
}
//(4)释放资源
s.close();
TCP编程是将数据包通过建立的流通道来传输, 通过IO流来打包数据包, 可以出现文本输入和键盘输入的方式,
也可以文本输入和文本读取, 结合方法就可实现