TCP文件传输
如何使用tcp实现局域网内文件传输.doc

如何使用tcp实现局域网内文件传输具体功能:可以利用python创建的TCP客户端从我们自己搭建的TCP服务器上下载文件。
实现需求:安装socket模块简单了解sokcet模块用法服务器代码如下:import socketdef file_deal(file_name):# 定义函数用于处理用户索要下载的文件try:# 二进制方式读取files = open(file_name, rb)mes = files.read()except:print(没有该文件)else:files.close()return mesdef main():# 创建套接字tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 固定端口号tcp_socket.bind((,8888))# 将主动套接字转为被动套接字tcp_socket.listen(128)while True:# 利用accept获取分套接字以及客户端的地址client_socket,client_addr = tcp_socket.accept()# 接收客户端的数据file_name = client_socket.recv(4096)# 调用函数处理用户下载的文件mes = file_deal(file_name)if mes:# 如果文件不为空发送client_socket.send(mes)#关闭分套接字client_socket.close()if __name__ == __main__:main()import socketdef file_deal(file_name):# 定义函数用于处理用户索要下载的文件try:# 二进制方式读取files = open(file_name, rb)mes = files.read()except:print(没有该文件)else:files.close()return mesdef main():# 创建套接字tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 固定端口号tcp_socket.bind((,8888))# 将主动套接字转为被动套接字tcp_socket.listen(128)while True:# 利用accept获取分套接字以及客户端的地址client_socket,client_addr = tcp_socket.accept()# 接收客户端的数据file_name = client_socket.recv(4096)# 调用函数处理用户下载的文件mes = file_deal(file_name)if mes:# 如果文件不为空发送client_socket.send(mes)#关闭分套接字client_socket.close()if __name__ == __main__:main()客户端代码:from socket import *import osdef main():# 建立套接字tcp_socket = socket(AF_INET, SOCK_STREAM) # 接收用输入的服务器端的ip和端口tcp_ip = input(请输入ip:)tcp_port = int(input(请输入端口:))# 连接服务器tcp_socket.connect((tcp_ip, tcp_port))# 输入要下载的文件名file_name = input(请输入要下载的文件名:) # 将文件名发送至服务器端tcp_socket.send(file_name.encode())# 创建一个空文件new_file = open(file_name, wb)# 用与计算读取的字节数time = 0while True:# 接收服务器端返回的内容mes = tcp_socket.recv(4096)# 如果内容不为空执行if mes:# 解码并向文件内写入new_file.write(mes.decode())# 计算字节time += len(mes)else:# 如果字节数为空即未收到内容if time == 0:# 关闭文件new_file.close()# 删除刚刚创建的文件os.remove(file_name)print(没有您要下载的文件)else:# 如过time有值时name文件传输完成print(文件下载成功)break# 关闭套接字tcp_socket.close()if __name__ == __main__:main()补充:局域网、校园网安全维护方法校园网络分为内网和外网,就是说他们可以上学校的内网也可以同时上互联网,大学的学生平时要玩游戏购物,学校本身有自己的服务器需要维护;在大环境下,首先在校园网之间及其互联网接入处,需要设置防火墙设备,防止外部攻击,并且要经常更新抵御外来攻击;由于要保护校园网所有用户的安全,我们要安全加固,除了防火墙还要增加如ips,ids等防病毒入侵检测设备对外部数据进行分析检测,确保校园网的安全;外面做好防护措施,内部同样要做好防护措施,因为有的学生电脑可能带回家或者在外面感染,所以内部核心交换机上要设置vlan隔离,旁挂安全设备对端口进行检测防护;内网可能有ddos攻击或者arp病毒等传播,所以我们要对服务器或者电脑安装杀毒软件,特别是学校服务器系统等,安全正版安全软件,保护重要电脑的安全;对服务器本身我们要安全server版系统,经常修复漏洞及更新安全软件,普通电脑一般都是拨号上网,如果有异常上层设备监测一般不影响其他电脑。
Python实现TCP文件传输

Python实现TCP文件传输TCP (Transmission Control Protocol) 是一种可靠的传输协议,常用于在网络上传输数据。
通过使用Python的内置socket库,可以轻松实现TCP文件传输。
在TCP文件传输过程中,需要一个服务器和一个客户端。
服务器负责接收文件,而客户端负责发送文件。
下面是一个简单的Python程序,实现了TCP文件传输的服务器端:```pythonimport socket#服务器IP地址和端口号SERVER_HOST='127.0.0.1'#一次接收的最大数据量BUFFER_SIZE=4096# 创建一个socket对象server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 将服务器socket对象绑定到指定的IP地址和端口号上server_socket.bind((SERVER_HOST, SERVER_PORT))# 使服务器socket对象监听传入的连接server_socket.listen(5)print(f"服务器正在监听地址 {SERVER_HOST}:{SERVER_PORT}...") #接受客户端连接client_socket, address = server_socket.acceptprint(f"来自地址 {address} 的连接已建立!")#接收客户端发送的文件名file_name = client_socket.recv(BUFFER_SIZE).decode#打开文件,准备写入file = open(file_name, 'wb')#开始接收文件数据并写入文件while True:data = client_socket.recv(BUFFER_SIZE)if not data:breakfile.write(data)# 关闭文件和socket连接file.closeclient_socket.closeserver_socket.closeprint("文件接收完毕!")```在以上代码中,我们首先创建了一个服务器socket对象,并将其绑定到指定的IP地址和端口号上。
计算机网络中的常见传输协议与特点

计算机网络中的常见传输协议与特点计算机网络是由多个节点相互连接而成的通信系统,传输协议是网络通信的基础。
不同的传输协议具有不同的特点和用途,本文将介绍计算机网络中常见的传输协议及其特点。
一、传输控制协议(TCP)TCP是一种面向连接的传输协议,它提供可靠的数据传输和流量控制。
TCP将数据分割成较小的数据包(称为段),通过网络传输,并按顺序重新组装,确保数据的可靠性。
它还使用滑动窗口的机制进行流量控制,能够根据接收端的处理能力动态调整数据传输的速率。
TCP 适用于对数据传输的可靠性要求较高的场景,例如文件传输、电子邮件和网页浏览等。
二、用户数据报协议(UDP)UDP是一种无连接的传输协议,它提供了一种简单的数据传输服务,但不保证数据的可靠性。
UDP将数据打包成数据报,直接发送给目标主机,不需要进行建立连接的过程。
UDP具有传输速度快、实时性高的特点,适用于对数据传输可靠性要求较低、实时性要求较高的应用场景,例如音视频传输和网络游戏。
三、超文本传输协议(HTTP)HTTP是一种基于TCP的应用层协议,用于在Web浏览器和Web服务器之间传输超文本。
HTTP使用请求-响应的模式进行通信,客户端发送HTTP请求给服务器,服务器根据请求返回相应的HTTP响应。
HTTP协议简单易用,支持多种媒体类型的数据传输,是Web应用中最常用的协议之一。
四、文件传输协议(FTP)FTP是一种用于文件传输的协议,它基于TCP连接进行数据传输。
FTP支持匿名登录和身份验证,用户可以通过FTP客户端连接FTP服务器,实现文件上传、下载、删除等功能。
FTP具有文件传输稳定可靠的特点,适用于大文件传输和远程文件管理等场景。
五、简单邮件传输协议(SMTP)SMTP是一种用于电子邮件传输的协议,它负责将发件人的邮件传输给收件人的邮件服务器。
SMTP使用TCP连接进行通信,通过简单的命令和响应来完成邮件的发送和接收。
SMTP协议是互联网上邮件传输的标准协议之一,它确保了邮件的可靠传输和正确路由。
有关TCPUDP的使用例子

有关TCPUDP的使用例子TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是网络通信中常用的两种传输协议。
它们在应用层之下的传输层提供了不同的传输方式和特性。
下面是关于TCP和UDP的使用例子。
1.聊天应用程序TCP协议适用于需要可靠传输的应用场景,比如聊天应用程序。
用户在手机或电脑上运行聊天应用程序,发送聊天信息给其他用户。
TCP协议确保信息按照发送的顺序接收,并且在传输过程中不会受到丢包或乱序的影响。
每个聊天消息的发送和接收都通过TCP连接完成,确保信息的可靠传输。
2.文件传输TCP协议也适用于大文件传输。
例如,用户需要通过互联网将大型文件发送给其他用户。
TCP协议保证了文件在传输过程中的完整性和准确性。
它会自动检测和纠正丢失或损坏的数据包,并确保接收方和发送方之间的数据一致性。
这种方式适用于需要确保每个数据包都到达的场景,尽管传输速度可能稍慢。
3.实时流媒体UDP协议适用于实时流媒体应用程序,如在线直播或在线游戏。
UDP提供了更低的延迟和更快的传输速率,但不提供像TCP那样的可靠性和顺序性。
在直播或游戏中,用户希望能快速看到视频或游戏画面,而不必要求每个数据包都到达和按顺序排列。
这样,UDP协议的特性更适合这类应用场景。
4.DNS(域名系统)DNS是将域名解析为IP地址的系统。
UDP协议通常用于DNS查询,因为它是一种简单的请求-响应协议。
当用户在浏览器中输入一个域名时,DNS解析请求将通过UDP协议发送到DNS服务器。
UDP快速地将请求传递给服务器,并且不需要进行复杂的连接设置,因为DNS查询通常是短暂而频繁的交互。
5.游戏中的多播UDP也可以用于多播(Multicast)应用,其中一台计算机可以将数据包发送给多个接收者。
在在线游戏中,UDP协议可用于将游戏状态信息快速广播给所有玩家。
多播可以减少网络流量,因为只有一次广播就可以到达多个接收者,而不是向每个接收者发送单独的数据包。
上位机通过tcp通讯给abb机器人发送文件的方法

上位机通过TCP通讯给ABB机器人发送文件的方法一、背景介绍在工业自动化生产中,ABB机器人作为自动化生产线上的重要一员,往往需要与上位机进行数据交换,其中文件传输是一种常见的数据交换方式。
TCP/IP是一种可靠的网络通讯协议,采用TCP/IP协议进行文件传输可以保证数据的安全和稳定。
二、上位机通过TCP通讯给ABB机器人发送文件的基本原理1.建立TCP连接在进行文件传输之前,首先需要建立TCP连接。
上位机作为客户端,ABB机器人作为服务器端,客户端与服务器端之间需要通过三次握手建立TCP连接。
2.发送文件数据建立了TCP连接之后,客户端可以向服务器端发送文件数据。
上位机需要将文件数据按照TCP协议进行分段封装,并通过TCP连接发送给ABB机器人。
3.文件接收与保存ABB机器人服务器端接收到文件数据后,需要进行数据解析并保存文件。
通过解析TCP数据包中的文件数据,服务器端可以将文件数据组装成完整的文件,并保存在指定的路径下。
三、上位机通过TCP通讯给ABB机器人发送文件的具体步骤1.建立TCP连接```1.1 在上位机上开启TCP通讯功能,设置ABB机器人的IP位置区域和端口号。
1.2 使用Socket套接字建立TCP连接。
1.3 发送连接请求,并进行三次握手建立TCP连接。
```2.发送文件数据```2.1 读取需要发送的文件数据。
2.2 将文件数据按照TCP协议进行分段封装。
2.3 通过建立的TCP连接,向ABB机器人发送文件数据。
```3.文件接收与保存```3.1 ABB机器人服务器端接收文件数据,并进行数据解析。
3.2 将TCP数据包中的文件数据组装成完整的文件。
3.3 将文件保存在指定的路径下。
```四、上位机通过TCP通讯给ABB机器人发送文件的注意事项1.文件传输安全在进行文件传输时,需要保证传输的文件数据的安全性。
可以采用加密传输的方式,保护文件数据的隐私和完整性。
2.文件传输稳定性在进行文件传输时,需要保证传输的文件数据的稳定性。
TCP与UDP的区别及其应用

TCP与UDP的区别及其应用TCP和UDP是互联网中最常用的两种通讯协议,正如两种不同的语言,它们各有优点和场合。
本文将重点探讨TCP与UDP的区别及其应用。
1. TCP和UDP的区别TCP(Transmission Control Protocol)是一种面向连接的协议,它保证数据传输的可靠性和有序性,是应用最为广泛的协议之一。
UDP (User Datagram Protocol)则是一种无连接的协议,它不保证数据传输的可靠性和有序性,但是速度较快,适用于一些实时性较高的应用。
1.1面向连接vs无连接TCP是一种面向连接的协议,在数据传输之前要先建立连接,即三次握手。
这样可以保证数据传输的可靠性和有序性。
如果数据在传输过程中出现丢包、延迟等问题,TCP会尝试重传数据包,保证数据的完整性。
但是,TCP连接的建立和断开需要额外的时间和资源,尤其是在网络拥塞的情况下,会增加一定的延迟。
UDP则是一种无连接的协议,不需要建立连接,传输速度较快。
但是,由于其无连接的特性,数据传输过程中出现丢包、延迟等问题时,UDP不会重传数据包,因此不保证数据传输的完整性。
也就是说,UDP更适合一些实时性要求高,但数据完整性要求不高的应用场合,例如实时视频流、音频传输、游戏等。
1.2可靠性vs速度TCP保证了数据传输的可靠性,可以保证数据不会丢失,数据的接收顺序也是有序的。
但是,由于TCP在传输数据之前要建立连接、拆除连接等操作,需要额外的时间和资源,因此速度相对较慢。
TCP也有一些针对网络拥塞等问题的优化措施,例如滑动窗口协议、流量控制和拥塞控制等。
UDP则是一种快速传输数据的协议,它不保证数据的可靠性和有序性,数据包间的传输不存在顺序问题,也就是说,UDP在保证实时性的同时,牺牲了数据传输的可靠性和有序性。
1.3应用场合的差异TCP适用于数据完整性要求高的应用场合,例如文件下载、网页浏览等。
TCP可靠性较高,可以保证数据不会丢失、数据传输的有序性,用户可以比较稳定地获取数据。
tcp常用协议号
tcp常用协议号【原创版】目录1.TCP/IP协议简介2.TCP 协议及其常用应用3.TCP 协议的端口号4.其他常见TCP/IP协议及其端口号5.结论正文一、TCP/IP 协议简介TCP/IP协议是互联网协议的总称,其中包含了一系列用于实现互联网通信的协议。
TCP/IP协议分为四大类,分别是应用层、传输层、网络层和链路层,每一层都负责不同的功能,共同构建了互联网的基础架构。
二、TCP 协议及其常用应用TCP(传输控制协议)是应用层中最常见的协议之一,它的主要作用是确保数据在发送端和接收端之间的可靠传输。
TCP 协议的常用应用包括:1.文件传输:使用 TCP 协议进行文件传输时,可以确保文件在发送端和接收端之间的完整性和可靠性。
2.电子邮件:TCP 协议在电子邮件的发送和接收过程中也发挥着重要作用,保证了邮件的及时、可靠传输。
3.网页浏览:在网页浏览过程中,TCP 协议负责将网页数据从服务器端传输到客户端,确保了网页内容的完整性和正确显示。
三、TCP 协议的端口号TCP 协议的端口号是区分不同应用程序的标识。
常见的 TCP 协议端口号包括:1.HTTP: 802.FTP: 213.SMTP: 254.POP3:1105.Telnet: 236.SSH: 22四、其他常见 TCP/IP 协议及其端口号除了 TCP 协议之外,还有许多其他常见的 TCP/IP 协议,如:1.IP(网际协议):负责互联网中数据包的路由和转发,其端口号为 0。
2.ICMP(互联网控制报文协议):用于在 IP 主机和路由器之间传递控制消息,端口号为 1。
3.IGMP(互联网组管理协议):用于 IP 主机和组播路由器之间传递组播成员信息,端口号为 2。
4.UDP(用户数据报协议):提供无连接、不可靠的数据传输服务,端口号范围为 1-65535。
5.IPv6(互联网协议第 6 版):用于提供 IP 地址资源的新一代互联网协议,端口号与 IPv4 相同。
TCP与UDP的区别及其应用
TCP与UDP的区别及其应用TCP(传输控制协议)和UDP(用户数据报协议)是两种不同的传输协议,它们在网络通信中起着非常重要的作用。
虽然它们都是在网络通信中传输数据的协议,但是它们有很大的区别。
在本文中,我将分别介绍TCP和UDP的特点、区别及其在各种应用中的使用。
一、TCP的特点及应用1. TCP的特点TCP是一种面向连接的协议,它在传输数据之前需要先建立连接,然后传输数据,传输结束后再断开连接。
它提供可靠的、按序传输的数据传输服务,能够保证数据的完整性和可靠性。
TCP使用三次握手来建立连接,四次挥手来断开连接,在传输数据时会进行数据校验和确认。
因此,它非常适合对数据传输的要求比较高的应用场景。
2. TCP的应用TCP广泛应用于各种需要可靠传输的应用场景,包括但不限于以下几个方面:(1)网络浏览:当用户访问网页时,浏览器会使用TCP协议与服务器建立连接,传输页面内容。
(2)文件传输:在文件传输过程中,TCP可以保证文件的完整性和可靠性,确保文件在传输过程中不会丢失或损坏。
(3)电子邮件:电子邮件的发送和接收过程中需要使用TCP协议来保证数据传输的可靠性。
(4)远程登录:如Telnet、SSH等远程登录方式都使用TCP协议来传输数据。
(5)数据库访问:数据库访问时需要使用TCP协议来传输数据。
二、UDP的特点及应用1. UDP的特点UDP是一种无连接的协议,它不需要在传输数据之前建立连接,也不保证数据的完整性和可靠性。
UDP是一种简单的数据传输协议,它仅提供数据传输的功能,不对数据传输进行确认和校验。
因此,UDP的传输效率比TCP高,但可靠性较差。
由于UDP不需要建立连接,所以它的开销比较小,适合对实时性要求较高的应用场景。
2. UDP的应用UDP主要用于那些对实时性要求较高的应用场景,包括但不限于以下几个方面:(1)实时视频、音频传输:视频会议、实时语音通话等应用中使用UDP来传输数据,因为在这些应用中,实时性比可靠性更为重要。
qt tcp通信消息与文件传输类封装
qt tcp通信消息与文件传输类封装TCP(传输控制协议)是一种常用的网络通信协议,用于在互联网上进行可靠的数据传输。
在TCP通信中,消息的传输和文件的传输都是非常常见的应用场景。
为了方便开发者的使用,我们可以封装一个TCP通信消息与文件传输类,使得通信过程更加简单、高效。
首先,我们需要定义一个TCP通信类,提供了建立连接、发送消息、接收消息和断开连接等功能。
这个类可以使用QT框架提供的QTcpSocket类来实现,通过建立TCP连接,我们可以与服务器或其他设备进行通信。
在发送消息和接收消息时,我们可以使用QTcpSocket 的write和read函数来完成数据的发送和接收。
在封装TCP通信类的过程中,我们需要考虑一些重要的因素。
首先,对于消息的传输,我们可以考虑使用JSON(JavaScript Object Notation)这种轻量级的数据交换格式。
通过将消息以JSON格式进行编码和解码,可以方便地在不同的平台和语言之间进行消息的传递和解析。
其次,对于文件的传输,我们可以使用基于TCP的文件传输协议来进行。
在文件传输过程中,我们可以先将文件分割成较小的块,然后逐一传输。
在接收端,我们可以根据每个块的序号和总块数来组装完整的文件。
为了使用这个封装好的TCP通信消息与文件传输类,我们可以按照以下步骤进行操作。
首先,创建一个TCP通信对象并建立连接。
然后,我们可以调用发送消息的函数,将要发送的消息以JSON格式传入。
接收端在接收到消息后,可以通过解析JSON数据,获得发送方想要传递的内容。
对于文件传输,我们可以调用文件传输函数,将要传输的文件路径作为参数传入。
在接收端,可以设置一个文件接收路径,当接收到文件传输请求后,可以将传输的块写入到指定的文件路径中。
总结起来,封装TCP通信消息与文件传输类可以使得TCP通信更加简洁、高效。
我们可以使用该类进行消息的传输和文件的传输,并且采用合适的数据格式和协议来保证数据的可靠性和完整性。
java实现两台电脑间TCP协议文件传输
java实现两台电脑间TCP协议⽂件传输记录下之前所做的客户端向服务端发送⽂件的⼩项⽬,总结下学习到的⼀些⽅法与思路。
注:本⽂参考⾃《⿊马程序员》视频。
⾸先明确需求,在同⼀局域⽹下的机器⼈A想给喜欢了很久的机器⼈B发送情书,但是机器⼈B事先并不知道⼩A的⼼思,那么作为⽉⽼(红娘)该如何帮助他们呢?然后建⽴模型并拆分需求。
这⾥两台主机使⽤⽹线直连,在物理层上确保建⽴了连接,接下来便是利⽤相应的协议将信息从电脑A传给电脑B。
在这⼀步上,可以将此过程抽象为⽹络+I/O(Input、Output)的过程。
如果能在⼀台电脑上实现⽂件之间的传输,再加上相互的⽹络协议,羞涩的A不就可以将情书发送给B了吗?因此要先解决在⼀台电脑上传输信息的问题。
为了在⽹络上传输,使⽤必要的协议是必要的,TCP/IP协议簇就是为了解决计算机间通信⽽⽣,⽽这⾥主要⽤到UDP和TCP两种协议。
当⼩A可以向⼩B发送情书后,⼜出现了众多的追求者,那么⼩B如何去处理这么多的并发任务呢?这时便要⽤到多线程的技术。
因此接下来将分别介绍此过程中所⽤到了I/O流(最基础)、⽹络编程(最重要)、多线程知识(较重要)和其中⼀些⼩技巧。
⼀、I/O流I/O流⽤来处理设备之间的数据传输,Java对数据的传输通过流的⽅式。
流按操作数据分为两种:字节流与字符流。
如果数据是⽂本类型,那么需要使⽤字符流;如果是其他类型,那么使⽤字节流。
简单来说,字符流=字节流+编码表。
流按流向分为:输⼊流(将硬盘中的数据读⼊内存),输出流(将内存中的数据写⼊硬盘)。
简单来说,想要将某⽂件传到⽬的地,需要将此⽂件关联输⼊流,然后将输⼊流中的信息写⼊到输出流中。
将⽬的关联输出流,就可以将信息传输到⽬的地了。
Java提供了⼤量的流对象可供使⽤,其中有两⼤基类,字节流的两个顶层⽗InputStream与OutputStream;字符流的两个顶层⽗类Reader 与Writer。
这些体系的⼦类都以⽗类名作为后缀,⽽⼦类名的前缀就是该对象的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
String filePath = reader.nextLine();
os.write(filePath.getBytes());
//接收传输来的文件
intlen = is.read(fer);
String temp =newString(fer,0,len);
privatestaticfinalStringSERVERIP="127.0.0.1";
privatestaticfinalintSERVERPORT= 62345;
privatestaticfinalintCLIENTPORT= 54321;
publicstaticvoidmain(String[] args) {
break;
}
DatagramPacket dataPacket =newDatagramPacket(buf,buf.length, IPAddress, port);
serverSocket.send(dataPacket);
TimeUnit.MICROSECONDS.sleep(10);
}
}
}
e.printStackTrace();
}
}
publicstaticvoidmain(String[] args) {
//TODOAuto-generated method stub
SendFileServer.server();
}
publicvoidrun() {
//TODOAuto-generated method stub
System.out.println("link to the server successfully!");
System.out.println("This is the server, welcome you ");
System.out.println("Please input the filepath you want from the server :");
{
os.write(data);
}
System.out.print("This translation costs:");
System.out.println(newDate().getTime()-a+"ms");
System.out.println("文件传输成功");
}catch(IOException e) {
os.close();
fos.close();
socket.close();
}catch(IOException e) {
//TODOAuto-generated catch block
e.printStackTrace();
}
}
}
UDP文件传输
服务端:
importjava.io.*;
.*;
//用来接受传输过来的字符
byte[]buf=newbyte[100];
byte[] fer=newbyte[100];
Socket socket =newSocket();
try{
//建立连接
socket.connect(newInetSocketAddress(SERVERIP,SERVERPORT),CLIENTPORT);
DatagramSocket serverSocket =newDatagramSocket(12346);
DatagramPacket receivePacket =newDatagramPacket(receiveData,receiveData.length);
serverSocket.receive(receivePacket);//接受请求命令
String filePath =inFromUser.readLine();
sendData=filePath.getBytes();
DatagramPacket sendPacket =newDatagramPacket(sendData,sendData.length, IPAddress, port);
InetAddress IPAddress = receivePacket.getAddress();
intport = receivePacket.getPort();
DataInputStream fis =newDataInputStream(newBufferedInputStream(newFileInputStream(newString(receivePacket.getData()))));
e.printStackTrace();
}finally
{
try{
is.close();
os.close();
fins.close();
this.socketServer.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
}
}
客户端:
importjava.io.*;
{
//接收到一个客户端连接之后,创建一个新的线程进行服务
//并将联通的socket传给该线程
Socket s = serverSocket.accept();
newThread(newSendFileServer(s)).start();
}
}catch(IOException e) {
//TODOAuto-generated catch block
.*;
importjava.util.Scanner;
importjava.util.concurrent.TimeUnit;
/*
*用TCP进行文件传输
*此文件为客户端文件
*连接上服务器之后,直接接受文件
*
* */
publicclassReceiveFileClient {
InputStream is = socket.getInputStream();
OutputStream os=socket.getOutputStream();
//接收传输来的文件名
System.out.println("This is the client");
System.out.println("请输入请求文件的路径(包含后缀名)");
.Socket;
importjava.util.Date;
importjava.util.Scanner;
/*
*用TCP进行文件传输
*
*此文件为服务器文件
*
*当接受到客户端的请求之后,先向其传输文件名
*当客户端接受完毕之后,向客户端传输文件
* */
publicclassSendFileServerimplementsRunnable{
publicstaticbyte[]buf=newbyte[1024];
publicstaticvoidmain(String args[])throwsException
{
BufferedReader inFromUser =newBufferedReader(newInputStreamReader(System.in));
}
if(read == -1) {
System.out.println("The translation is finished");
System.out.print("This translation costs:");
System.out.println(newDate().getTime()-a+"ms");
byte[] buf =newbyte[100];
byte[]fer=newbyte[100];
OutputStream os=null;
InputStream is=null;
FileInputStream fins=null;
try{
os =socketServer.getOutputStream();
clientSocket=newDatagramSocket(12345);
TCPUDP
无论是TCP或者UDP都需要在服务端开启的情况下进行文件的传输
TCP文件传输
服务端:
importjava.io.*;
.*;
importjava.io.IOException;
importjava.io.OutputStream;
.ServerSocket;
publicstaticDatagramSocketclientSocket;
publicstaticvoidmain(String args[])throwsException
{
BufferedReader inFromUser =newBufferedReader(newInputStreamReader(System.in));
客户端:
importjava.io.*;
.*;
publicclassReceiveClient {
publicstaticbyte[]sendData=newbyte[1024];
publicstaticbyte[]receiveData=newbyte[1024];
publicstaticbyte[]buf=newbyte[1024];
{
try{