网络编程 -> TCP实现聊天和文件上传

1. TCP实现聊天

1.1 客户端
  • ① 连接服务器 Socket
  • ② 发送消息
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
//客户端
public class TcpClientDemo01 {public static void main(String[] args) {Socket socket = null;OutputStream os = null;try {//1.要知道服务端的地址,端口号InetAddress serverIP = InetAddress.getByName("127.0.0.1");int port = 9999;//2.创建一个socket连接socket = new Socket(serverIP,port);//3.发送消息os = socket.getOutputStream();os.write("你好,Anobabe!".getBytes());} catch (Exception e) {e.printStackTrace();} finally {if(os != null){try {os.close();} catch (IOException e) {e.printStackTrace();}}if(socket != null){try {socket.close();} catch (IOException e) {e.printStackTrace();}}}}
}
1.2 服务器端
  • ① 建立服务的端口 ServerSocket
  • ② 等待用户的连接
  • ③ 接收用户的消息
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;//服务器端
public class TcpServerDemo01 {public static void main(String[] args) {ServerSocket serverSocket = null;Socket socket = null;InputStream is = null;ByteArrayOutputStream baos = null;try {//1.得有一个地址serverSocket = new ServerSocket(9999);//2.等待客户端连接过来socket = serverSocket.accept();//3.读取客户端的消息is = socket.getInputStream();//管道流baos = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len;while((len = is.read(buffer)) != -1){baos.write(buffer,0,len);}System.out.println(baos.toString());} catch (IOException e) {e.printStackTrace();}finally {if(baos != null){try {baos.close();} catch (IOException e) {e.printStackTrace();}}if(is != null){try {is.close();} catch (IOException e) {e.printStackTrace();}}if(socket != null){try {socket.close();} catch (IOException e) {e.printStackTrace();}}if(serverSocket != null){try {serverSocket.close();} catch (IOException e) {e.printStackTrace();}}}}
}

2. TCP实现文件上传

2.1 客户端
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;public class TcpClientDemo02 {public static void main(String[] args) {Socket socket = null;OutputStream os = null;FileInputStream fis = null;InputStream inputStream = null;ByteArrayOutputStream byteArrayOutputStream = null;try {InetAddress serverIp = InetAddress.getByName("127.0.0.1");socket = new Socket(serverIp,9990);os = socket.getOutputStream();fis = new FileInputStream(new File("babe.jpg"));byte[] buffer = new byte[1024];int len;while((len = fis.read(buffer)) != -1){os.write(buffer,0,len);}//通知服务器已经传输结束了socket.shutdownOutput();//确定服务器接收完毕,才能断开连接inputStream = socket.getInputStream();byteArrayOutputStream = new ByteArrayOutputStream();byte[] buffer2 = new byte[1024];int len2;while((len2 = inputStream.read(buffer2)) != -1){byteArrayOutputStream.write(buffer2,0,len2);}System.out.println(byteArrayOutputStream.toString());} catch (IOException e) {e.printStackTrace();}finally {if(byteArrayOutputStream != null){try {byteArrayOutputStream.close();} catch (IOException e) {e.printStackTrace();}}if(inputStream != null){try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}if(fis != null){try {fis.close();} catch (IOException e) {e.printStackTrace();}}if(os != null){try {os.close();} catch (IOException e) {e.printStackTrace();}}if(socket != null){try {socket.close();} catch (IOException e) {e.printStackTrace();}}}}
}
2.2 服务器端
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class TcpServerDemo02 {public static void main(String[] args) {ServerSocket serverSocket = null;Socket socket = null;InputStream is = null;FileOutputStream fos = null;try {serverSocket = new ServerSocket(9990);socket = serverSocket.accept(); //阻塞式监听,会一直等待客户端连接is = socket.getInputStream();fos = new FileOutputStream(new File("receive.png"));byte[] buffer = new byte[1024];int len;while((len = is.read(buffer)) != -1){fos.write(buffer,0,len);}//通知客户端接收完毕了OutputStream outputStream = socket.getOutputStream();outputStream.write("我接收完毕了,你可以断开了".getBytes());} catch (IOException e) {e.printStackTrace();} finally {if(fos != null){try {fos.close();} catch (IOException e) {e.printStackTrace();}}if(is != null){try {is.close();} catch (IOException e) {e.printStackTrace();}}if(socket != null){try {socket.close();} catch (IOException e) {e.printStackTrace();}}if(serverSocket != null){try {serverSocket.close();} catch (IOException e) {e.printStackTrace();}}}}
}

kuangshenshuo-网络编程-TCP实现聊天和文件上传相关推荐

  1. Java网络编程练习把本地的文件上传到服务器保存

    1)文件上传到客户端步骤: 1.创建客户端socket对象,指定要连接的服务器的ip地址和端口号 2.客户端socket对象调用getOutputStream方法,获取客户端的字节输出流对象 3.创建 ...

  2. 网络编程(Tcp/Udp实现聊天、文件上传)

    网络编程 1.1 概述 计算机网络是指将位置不同的多台[计算机 通过通信线路连接起来,实现资源共享和信息传递的计算机系统 1.2 网络通信的要素 ip和端口 网络通信协议(tcp/udp) 1.3 I ...

  3. 网络编程 UDP通信的过程 TCP通信过程 多线程文件上传

    网络概述 协议 在网络之间传出数据时需要按照指定的标准来传输,标准中规定了数据的格式.大小.传输的方式.传输速率.形成统一规范->按照规范开发的代码->协议(应用层.传输层.网络层.链路层 ...

  4. TCP文件上传Java_Java 理解TCP通信案例:文件上传案例

    文件上传分析图解 [客户端]输入流,从硬盘读取文件数据到程序中. [客户端]输出流,写出文件数据到服务端. [服务端]输入流,读取文件数据到服务端程序. [服务端]输出流,写出文件数据到服务器硬盘中. ...

  5. 【Java编程系列】Minio实现文件上传下载

    热门系列: [Java编程系列]Amazon S3实现文件上传下载 目录 热门系列: 1.前言 2.Minio实战代码 2.1 Minio环境部署 2.2 Minio的Sdk对接实现 2.2.1 Mi ...

  6. 网络编程应用:基于TCP协议【实现文件上传】--练习

    要求: 基于TCP协议实现一个向服务器端上传文件的功能 客户端代码: package Homework2;import java.io.File; import java.io.FileInputSt ...

  7. 网安学习笔记-1 文件上传

    文件上传漏洞初步认识 什么是文件上传漏洞 指程序对文件的上传未作全面的限制,导致用户可以上传一些超越用户权限的一些文件,可以是木马,shell脚本,病毒等 文件上传漏洞的危害 可以通过文件上传漏洞上传 ...

  8. java全双工_java网络编程TCP聊天全双工

    我正在实现服务器和客户端之间的简单TCP聊天.我使用多线程,因此服务器和客户端可以同时发送和接收数据(全双工).该程序可以工作,但如果服务器有一个控制台既可以输入发送消息,也可以显示接收消息(对于客户 ...

  9. (网络编程)TCP实现文件上传

    文章目录 TCP实现文件上传 客户端代码实现 服务器代码实现 TCP实现文件上传 演示TCP如何实现从客户端上传文件到服务器,可以用两台电脑连同一个局域网,一个作为客户端一个作为服务器实现,两台只要能 ...

最新文章

  1. 知乎服务化的实践与思考
  2. Java报表工具技巧--如何在Style Report创建用户自定义报表模板
  3. pthread_cond_singal condition
  4. 【转】C# 二维码生成
  5. 难道我的事,又要落空么。。。
  6. 【转】接口测试面试题
  7. mysql 历史记录查询
  8. 屏幕操作录制成gif图的技巧
  9. jdk动态代理为什么只能为接口生成代理类?
  10. 优思学院|朱兰,质量改进的先驱者
  11. HTML打地鼠小游戏代码
  12. 稳定触发windows蓝屏的路径漏洞,不要用来整人!
  13. 如何使用群发工具?邮件群发软件免费有哪些?
  14. php revel,Revel框架安装
  15. contiki之list(1)
  16. java中怎么给redis缓存设置失效时间
  17. 多分类中accuary与micro F1-score的恒等性
  18. Qt调用7z实现压缩和解压缩
  19. 关于html中img src= 的使用!!
  20. 开源分布式数据库中间件MyCat架构简介(一)——基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理

热门文章

  1. 产业洞察 |关于数字化拐点,听听CIO怎么说
  2. 无人机直线飞行的matlab程序,无人机飞行编码
  3. SkyDrive应用介绍
  4. 联想小新2019电脑wifi图标不见了
  5. 关于微信APP支付,提示支付验证签名失败
  6. QQ浏览器怎么调整HTML5,QQ浏览器怎么设置默认浏览器
  7. Spring Boot Freemark HTML 生成 PDF、生成水印Logo、docx文件生成PDF,Jar包运行可读取模板文件、字体文件
  8. AEG在线式单相UPS系统D.6000
  9. php trait 私有方法,php中的trait怎么使用?(附示例)
  10. 华三服务器安装centos7 问题记录