欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java网络编程TCP协议发送接收数据

程序员文章站 2022-03-15 22:12:17
...

一、客户端发送,服务器端接收

  1. package net;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.net.ServerSocket;
  5. import java.net.Socket;
  6. /*
  7. * TCP协议接收数据:
  8. * A:创建接收端Socket对象
  9. * B:监听客户端连接,返回一个对应的Socket对象
  10. * C:获取输入流,在控制台显示数据
  11. * D:释放资源
  12. */
  13. public class ServerDemo {
  14. public static void main(String[] args) throws IOException {
  15. ServerSocket ss = new ServerSocket(10010);
  16. Socket s = ss.accept();
  17. InputStream is = s.getInputStream();
  18. byte[] bys = new byte[1024];
  19. int len = is.read(bys);
  20. String str = new String(bys, 0, len);
  21. String ip = s.getInetAddress().getHostAddress();
  22. System.out.println(ip+"————"+str);
  23. s.close();
  24. }
  25. }
  1. package net;
  2. import java.io.IOException;
  3. import java.io.OutputStream;
  4. import java.net.Socket;
  5. /*
  6. * TCP协议发送数据:
  7. * A:创建发送端的Socket对象
  8. * B:获取输出流,写数据
  9. * C:释放资源
  10. */
  11. public class ClientDemo {
  12. public static void main(String[] args) throws IOException {
  13. Socket s = new Socket("192.168.1.22",10010);
  14. OutputStream os = s.getOutputStream();
  15. os.write("Hello TCP!".getBytes());
  16. s.close();
  17. }
  18. }

二、客户端从键盘录入数据,服务器端输出到控制台

  1. package net;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.OutputStreamWriter;
  7. import java.net.Socket;
  8. public class ClientDemo {
  9. public static void main(String[] args) throws IOException {
  10. //创建客户端Socket对象
  11. Socket s = new Socket("192.168.1.22",10010);
  12. //键盘录入数据
  13. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  14. //包装通道内的流
  15. BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
  16. String line = null;
  17. while((line = br.readLine()) != null){
  18. if("jieshu".equals(line)){
  19. break;
  20. }
  21. bw.write(line);
  22. bw.newLine();
  23. bw.flush();
  24. }
  25. br.close();
  26. s.close();
  27. }
  28. }
  1. package net;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.InputStreamReader;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. public class ServerDemo {
  9. public static void main(String[] args) throws IOException {
  10. //创建服务器端Socket对象
  11. ServerSocket ss = new ServerSocket(10010);
  12. //监听客户端连接
  13. Socket s = ss.accept();
  14. //包装通道内的流
  15. BufferedReader br= new BufferedReader(new InputStreamReader(s.getInputStream()));
  16. String line = null;
  17. while((line = br.readLine()) != null){
  18. System.out.println(line);
  19. }
  20. s.close();
  21. }
  22. }

三、客户端从键盘录入数据,服务器端输出到文本文件

客户端代码同二

服务器端:

  1. package net;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.net.ServerSocket;
  8. import java.net.Socket;
  9. public class ServerDemo {
  10. public static void main(String[] args) throws IOException {
  11. //创建服务器端Socket对象
  12. ServerSocket ss = new ServerSocket(10010);
  13. //监听客户端连接
  14. Socket s = ss.accept();
  15. //包装通道内的流
  16. BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
  17. //封装文本文件
  18. BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
  19. String line = null;
  20. while((line = br.readLine()) != null){
  21. bw.write(line);
  22. bw.newLine();
  23. bw.flush();
  24. }
  25. bw.close();
  26. s.close();
  27. }
  28. }

三、客户端读文本文件,服务器端输出到控制台

客户端:

  1. package net;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.FileReader;
  5. import java.io.IOException;
  6. import java.io.OutputStreamWriter;
  7. import java.net.Socket;
  8. public class ClientDemo {
  9. public static void main(String[] args) throws IOException {
  10. //创建客户端Socket对象
  11. Socket s = new Socket("192.168.1.22",10010);
  12. //封装文本文件
  13. BufferedReader br = new BufferedReader(new FileReader("fos.txt"));
  14. //包装通道内的流
  15. BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
  16. String line = null;
  17. while((line = br.readLine()) != null){
  18. bw.write(line);
  19. bw.newLine();
  20. bw.flush();
  21. }
  22. br.close();
  23. s.close();
  24. }
  25. }

服务器端代码同二

四、客户端上传文本文件,服务器端给出反馈

  1. package net;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.io.OutputStreamWriter;
  8. import java.net.ServerSocket;
  9. import java.net.Socket;
  10. public class ServerDemo {
  11. public static void main(String[] args) throws IOException {
  12. //创建服务器端Socket对象
  13. ServerSocket ss = new ServerSocket(10010);
  14. //监听客户端连接
  15. Socket s = ss.accept();
  16. //包装通道内的流
  17. BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
  18. //封装文本文件
  19. BufferedWriter bw = new BufferedWriter(new FileWriter("copy.txt"));
  20. String line = null;
  21. while((line = br.readLine()) != null){
  22. //此处当服务器读到"over"时,跳出循环,否则不会读到null,一直在循环内
  23. if("over".equals(line)){
  24. break;
  25. }
  26. bw.write(line);
  27. bw.newLine();
  28. bw.flush();
  29. }
  30. //给出反馈
  31. BufferedWriter bwServer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
  32. bwServer.write("文件上传成功");
  33. bwServer.newLine();
  34. bwServer.flush();
  35. bw.close();
  36. s.close();
  37. }
  38. }

五、客户端上传图片,服务器端给出反馈

  1. package net;
  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.FileInputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.net.Socket;
  8. public class ClientDemo {
  9. public static void main(String[] args) throws IOException {
  10. //创建客户端Socket对象
  11. Socket s = new Socket("192.168.1.22",10010);
  12. //封装图片文件
  13. BufferedInputStream bis = new BufferedInputStream(new FileInputStream("tupian.jpg"));
  14. //封装通道内的流
  15. BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream());
  16. byte[] bys = new byte[1024];
  17. int len = 0;
  18. while((len = bis.read(bys)) != -1){
  19. bos.write(bys, 0, len);
  20. }
  21. s.shutdownOutput();
  22. //接收反馈
  23. InputStream is = s.getInputStream();
  24. byte[] bys2 = new byte[1024];
  25. int len2 = is.read(bys2);
  26. String client = new String(bys2, 0, len2);
  27. System.out.println(client);
  28. bis.close();
  29. s.close();
  30. }
  31. }
  1. package net;
  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.OutputStream;
  7. import java.net.ServerSocket;
  8. import java.net.Socket;
  9. public class ServerDemo {
  10. public static void main(String[] args) throws IOException {
  11. //创建服务器端Socket对象
  12. ServerSocket ss = new ServerSocket(10010);
  13. //监听客户端连接
  14. Socket s = ss.accept();
  15. //封装通道内的流
  16. BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
  17. //封装图片文件
  18. BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("aaa.jpg"));
  19. byte[] bys = new byte[1024];
  20. int len = 0;
  21. while((len = bis.read(bys)) != -1){
  22. bos.write(bys, 0, len);
  23. }
  24. //给出反馈
  25. OutputStream os = s.getOutputStream();
  26. os.write("图片上传成功".getBytes());
  27. bos.close();
  28. s.close();
  29. }
  30. }
相关标签: tcp