Java网络编程TCP协议发送接收数据
程序员文章站
2022-03-15 22:12:17
...
一、客户端发送,服务器端接收
-
package net;
-
-
import java.io.IOException;
-
import java.io.InputStream;
-
import java.net.ServerSocket;
-
import java.net.Socket;
-
-
/*
-
* TCP协议接收数据:
-
* A:创建接收端Socket对象
-
* B:监听客户端连接,返回一个对应的Socket对象
-
* C:获取输入流,在控制台显示数据
-
* D:释放资源
-
*/
-
public class ServerDemo {
-
public static void main(String[] args) throws IOException {
-
ServerSocket ss = new ServerSocket(10010);
-
-
Socket s = ss.accept();
-
-
InputStream is = s.getInputStream();
-
byte[] bys = new byte[1024];
-
int len = is.read(bys);
-
String str = new String(bys, 0, len);
-
String ip = s.getInetAddress().getHostAddress();
-
System.out.println(ip+"————"+str);
-
-
s.close();
-
}
-
}
-
package net;
-
-
import java.io.IOException;
-
import java.io.OutputStream;
-
import java.net.Socket;
-
-
/*
-
* TCP协议发送数据:
-
* A:创建发送端的Socket对象
-
* B:获取输出流,写数据
-
* C:释放资源
-
*/
-
public class ClientDemo {
-
public static void main(String[] args) throws IOException {
-
Socket s = new Socket("192.168.1.22",10010);
-
-
OutputStream os = s.getOutputStream();
-
os.write("Hello TCP!".getBytes());
-
-
s.close();
-
}
-
}
二、客户端从键盘录入数据,服务器端输出到控制台
-
package net;
-
-
import java.io.BufferedReader;
-
import java.io.BufferedWriter;
-
import java.io.IOException;
-
import java.io.InputStreamReader;
-
import java.io.OutputStreamWriter;
-
import java.net.Socket;
-
-
public class ClientDemo {
-
public static void main(String[] args) throws IOException {
-
//创建客户端Socket对象
-
Socket s = new Socket("192.168.1.22",10010);
-
//键盘录入数据
-
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
-
//包装通道内的流
-
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
-
-
String line = null;
-
while((line = br.readLine()) != null){
-
if("jieshu".equals(line)){
-
break;
-
}
-
bw.write(line);
-
bw.newLine();
-
bw.flush();
-
}
-
-
br.close();
-
s.close();
-
}
-
}
-
package net;
-
-
import java.io.BufferedReader;
-
import java.io.IOException;
-
import java.io.InputStream;
-
import java.io.InputStreamReader;
-
import java.net.ServerSocket;
-
import java.net.Socket;
-
-
public class ServerDemo {
-
public static void main(String[] args) throws IOException {
-
//创建服务器端Socket对象
-
ServerSocket ss = new ServerSocket(10010);
-
//监听客户端连接
-
Socket s = ss.accept();
-
//包装通道内的流
-
BufferedReader br= new BufferedReader(new InputStreamReader(s.getInputStream()));
-
String line = null;
-
while((line = br.readLine()) != null){
-
System.out.println(line);
-
}
-
-
s.close();
-
}
-
}
三、客户端从键盘录入数据,服务器端输出到文本文件
客户端代码同二
服务器端:
-
package net;
-
-
import java.io.BufferedReader;
-
import java.io.BufferedWriter;
-
import java.io.FileWriter;
-
import java.io.IOException;
-
import java.io.InputStreamReader;
-
import java.net.ServerSocket;
-
import java.net.Socket;
-
-
public class ServerDemo {
-
public static void main(String[] args) throws IOException {
-
//创建服务器端Socket对象
-
ServerSocket ss = new ServerSocket(10010);
-
//监听客户端连接
-
Socket s = ss.accept();
-
//包装通道内的流
-
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
-
//封装文本文件
-
BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
-
-
String line = null;
-
while((line = br.readLine()) != null){
-
bw.write(line);
-
bw.newLine();
-
bw.flush();
-
}
-
-
bw.close();
-
s.close();
-
}
-
}
三、客户端读文本文件,服务器端输出到控制台
客户端:
-
package net;
-
-
import java.io.BufferedReader;
-
import java.io.BufferedWriter;
-
import java.io.FileReader;
-
import java.io.IOException;
-
import java.io.OutputStreamWriter;
-
import java.net.Socket;
-
-
public class ClientDemo {
-
public static void main(String[] args) throws IOException {
-
//创建客户端Socket对象
-
Socket s = new Socket("192.168.1.22",10010);
-
//封装文本文件
-
BufferedReader br = new BufferedReader(new FileReader("fos.txt"));
-
//包装通道内的流
-
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
-
-
String line = null;
-
while((line = br.readLine()) != null){
-
bw.write(line);
-
bw.newLine();
-
bw.flush();
-
}
-
-
br.close();
-
s.close();
-
}
-
}
服务器端代码同二
四、客户端上传文本文件,服务器端给出反馈
-
package net;
-
-
import java.io.BufferedReader;
-
import java.io.BufferedWriter;
-
import java.io.FileWriter;
-
import java.io.IOException;
-
import java.io.InputStreamReader;
-
import java.io.OutputStreamWriter;
-
import java.net.ServerSocket;
-
import java.net.Socket;
-
-
public class ServerDemo {
-
public static void main(String[] args) throws IOException {
-
//创建服务器端Socket对象
-
ServerSocket ss = new ServerSocket(10010);
-
//监听客户端连接
-
Socket s = ss.accept();
-
//包装通道内的流
-
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
-
//封装文本文件
-
BufferedWriter bw = new BufferedWriter(new FileWriter("copy.txt"));
-
-
String line = null;
-
while((line = br.readLine()) != null){
-
//此处当服务器读到"over"时,跳出循环,否则不会读到null,一直在循环内
-
if("over".equals(line)){
-
break;
-
}
-
bw.write(line);
-
bw.newLine();
-
bw.flush();
-
}
-
-
//给出反馈
-
BufferedWriter bwServer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
-
bwServer.write("文件上传成功");
-
bwServer.newLine();
-
bwServer.flush();
-
-
bw.close();
-
s.close();
-
}
-
}
五、客户端上传图片,服务器端给出反馈
-
package net;
-
-
import java.io.BufferedInputStream;
-
import java.io.BufferedOutputStream;
-
import java.io.FileInputStream;
-
import java.io.IOException;
-
import java.io.InputStream;
-
import java.net.Socket;
-
-
public class ClientDemo {
-
public static void main(String[] args) throws IOException {
-
//创建客户端Socket对象
-
Socket s = new Socket("192.168.1.22",10010);
-
//封装图片文件
-
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("tupian.jpg"));
-
//封装通道内的流
-
BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream());
-
-
byte[] bys = new byte[1024];
-
int len = 0;
-
while((len = bis.read(bys)) != -1){
-
bos.write(bys, 0, len);
-
}
-
-
s.shutdownOutput();
-
-
//接收反馈
-
InputStream is = s.getInputStream();
-
byte[] bys2 = new byte[1024];
-
int len2 = is.read(bys2);
-
String client = new String(bys2, 0, len2);
-
System.out.println(client);
-
-
bis.close();
-
s.close();
-
}
-
}
-
package net;
-
-
import java.io.BufferedInputStream;
-
import java.io.BufferedOutputStream;
-
import java.io.FileOutputStream;
-
import java.io.IOException;
-
import java.io.OutputStream;
-
import java.net.ServerSocket;
-
import java.net.Socket;
-
-
public class ServerDemo {
-
public static void main(String[] args) throws IOException {
-
//创建服务器端Socket对象
-
ServerSocket ss = new ServerSocket(10010);
-
//监听客户端连接
-
Socket s = ss.accept();
-
//封装通道内的流
-
BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
-
//封装图片文件
-
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("aaa.jpg"));
-
-
byte[] bys = new byte[1024];
-
int len = 0;
-
while((len = bis.read(bys)) != -1){
-
bos.write(bys, 0, len);
-
}
-
-
//给出反馈
-
OutputStream os = s.getOutputStream();
-
-
os.write("图片上传成功".getBytes());
-
-
bos.close();
-
s.close();
-
}
-
}