【过程记录 】windows和ubuntu两台电脑局域网进行socket通信收发数据和传输文件
- 实验图片和前期准备:
- ubuntu作为服务端,windows客户端传输数据和文件:
- windows作为服务端,ubuntu作为客户端:
实验图片和前期准备:
服务端发送和接受i:
客户端接收服务端的时间:
设备:
自己的笔记本电脑和jetsonnano一台+显示屏
同一个wifi 查看ubuntu和windows的ip地址
注意:windows和ubuntu关闭防火墙!
ubuntu作为服务端,windows客户端传输数据和文件:
服务端用python(jetsonnano)
客户端用java写:(自己笔记本)
服务端接收到文件并输出:
代码
from socket import *
import time
from time import ctime
host='192.168.31.177'
port=8189
bufsiz=1024
addr=(host,port)
tcpServer=socket(AF_INET,SOCK_STREAM)
tcpServer.bind(addr)
tcpServer.listen(5)while True:print('wait for connection..')tcpCliServer,addr= tcpServer.accept()print('..connect from',addr)while True:data = tcpCliServer.recv(bufsiz).decode() #decode() 方法以 encoding 指定的编码格式解码字符串。默认编码为字符串编码。print(data)
##str.decode(encoding='UTF-8',errors='strict') errors -- 设置不同错误的处理方案。if data == "yes":print("yee!")if not data:break#tcpCliServer.send('[%s]%s' % (bytes(ctime(),'utf-8'),str.encode(data)))tcpCliServer.send(bytes(ctime(), 'utf-8'))tcpCliServer.send(bytes("nice", 'utf-8'))#time.sleep(2)tcpCliServer.send(bytes("nn",'utf-8'));tcpCliServer.close()tcpServer.close()
客户端接收到的:
public static void main(String[]args) throws IOException {/* UdpClient udpClient = new UdpClient();try {udpClient.go();}catch (Exception e){System.out.println(e);}*/
int i = 0;Socket socket = new Socket("192.168.31.177",8189);OutputStream outputStream = socket.getOutputStream();
// OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
// outputStreamWriter.write(String.valueOf("我是中国人".getBytes(StandardCharsets.UTF_8)));File file = new File("D:\\Inventory.txt");DataOutputStream dataInputStream= new DataOutputStream(outputStream);FileInputStream fileInputStream = new FileInputStream(file);byte[]bytes = new byte[1024];try{dataInputStream.writeUTF(file.getName());dataInputStream.flush();System.out.println("传输文件");int len=0;while ((len = fileInputStream.read(bytes,0,bytes.length)) != -1){dataInputStream.write(bytes,0,bytes.length);dataInputStream.flush();}}catch (Exception e){System.out.println(e);}InputStream inputStream = socket.getInputStream();InputStreamReader inputStreamReader = new InputStreamReader(inputStream);outputStream.write("我是中国人yaoo".getBytes(StandardCharsets.UTF_8));char[] charArr = new char[1000];int readLen = -1;if((readLen = (inputStreamReader.read(charArr))) != -1) {while (i < 5) {i++;outputStream.write(("我是"+i).getBytes(StandardCharsets.UTF_8));String newString = new String(charArr, 0, readLen);System.out.println(newString);}dataInputStream.close();fileInputStream.close();outputStream.close();inputStream.close();socket.close();}}
windows作为服务端,ubuntu作为客户端:
自己笔记本作为服务端:
public class BeginThread extends Thread{private Socket socket;public BeginThread(Socket socket){super();this.socket = socket;}@Overridepublic void run(){try{InputStream inputStream = socket.getInputStream();InputStreamReader inputStreamReader = new InputStreamReader(inputStream);char[] charArr = new char[1000];int readLen = -1;while((readLen = (inputStreamReader.read(charArr))) != -1){String newString = new String(charArr,0,readLen);if(newString.matches("yes!"))System.out.println("成功收到来自客户端的数据");System.out.println(newString);}inputStreamReader.close();inputStream.close();//关闭两个流socket.close();//关闭socket}catch (IOException e){e.printStackTrace();}}}public class Server{public static void main(String[] args) throws IOException {ServerSocket socket = new ServerSocket(8888);int runTag = 1;while (runTag == 1){Socket socket1 = socket.accept();BeginThread beginThread = new BeginThread(socket1);beginThread.start();}socket.close();
}
服务端接收到数据:
客户端:
import socket # 导入 socket 模块s = socket.socket() # 创建 socket 对象
host = "192.168.31.131" # windows的ip
port = 8888 # 设置端口号s.connect((host, port))
s.send('yes!'.encode('utf-8')) #发送 TCP 数据,将 string 中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于 string 的字节大小。s.close()
【过程记录 】windows和ubuntu两台电脑局域网进行socket通信收发数据和传输文件相关推荐
- win7系统两台电脑之间利用Socket实现文件传输---C++实现
参考:http://www.jb51.net/article/53732.htm 本博客主要实现了简单win7系统下,两台电脑之间(客户机与服务器)的文件传输,主要是基于Windows网络编程中win ...
- 同一个局域网下的两台电脑实现定时或者实时拷贝数据
一. 实现两台电脑文件夹共享 0.连接两台电脑的网线 主要是在一个局域网之下,连接同一个热点WiFi也是可以的. 1. 设置两台电脑的IP 网络和共享中心--更改设配器设置--Internet 协议版 ...
- win网线连接两台电脑局域网互传文件
问题情境: 电脑A的整个磁盘文件需要迁移到电脑B,例如系统备份的镜像文件,或者要拷贝整个硬盘里的文件,我们又找不到这么大的移动存储设备,该怎么办,其实在没有网络和大容量移动磁盘的情况下,我们可以利用一 ...
- 网络通信篇上(udp实战开发)聊天器的开发两台电脑实现联通--socket模块的应用开发技术
网络通信:如今业界主流由udp通信和tcp通信,udp相对来说更加复杂一些,而tcp相对来说会更加的简单一些 我们首先先理解一下udp通信原理,和创建通信的必要步骤. 我们最常用的就是通过socket ...
- ubuntu两台电脑互传文件
在一台ubuntu电脑电脑上设置共享文件夹 新建一个文件夹,准备作为共享文件夹,如下图,我建立了free文件夹 在文件夹上右击-属性-权限,全部设置为"创建和删除文件" 右击fre ...
- 一些计算两台主机之间进行socket通信的延迟的小程序
最后更新于2021年6月1日 11:06:11 2021年5月26日 16:44:07:HTTP.TCP和Socket的概念和原理及其区别 iPerf图形化工具Jperf图文使用教程 Measurin ...
- linux 两个虚拟机 socket本地,两台虚拟机Linux系统socket通信
服务器: #include #include #include #include #include #include #include #define SERVER_PORT 20000 // def ...
- 两台电脑数据传输软件
在工作或者生活中,两台电脑之间经常要互相传输数据,如果是传输文件的话,那么有很多方式都可以实现在两台电脑之间传输文件.一般来说,在联网的情况下,可以通过QQ.微信.钉钉等软件进行文件传输,或者通过局域 ...
- 两台电脑大文件传输的详细教程
说到电脑间的数据传输,想必大家的脑海中立刻就会浮现出几个词,"慢"."麻烦",对于局域网内的两台电脑来说,如果是临时转移几个小文件,像是Word.PPT.PDF ...
最新文章
- The C10K problem原文翻译
- HDU1425简单排序题
- docker卸载命令_使用docker完成生信分析环境搭建
- 获取request header的值
- php联系人表单,PHP联系人表单布局不允许在电子邮件中添加新行
- 多级指针和静动态内存的跨函数访问
- hdu 5441 (并查集)
- Java-变量、常量
- 2021计算机一级新增知识点,2021年计算机一级知识点.doc
- Python风格总结:函数
- GridView 水平方向滑动
- 产品经理如何进行竞品分析?
- Spring学习笔记3——使用注解的方式完成注入对象中的效果
- html5晋级之路-学习笔记表单
- java replaceall删除中括号和内容_replaceAll()如何同时替换多个不同的字符串(或多个符号)...
- win10系统安装软件安装和问题处理
- vs2017安装nuget包生成和管理工具
- 如何使用Lumion创建惊艳的渲染
- Android 11.0 自定义仿小米全面屏手势导航左右手势滑动返回UI效果
- uniapp发布h5
热门文章
- Java web应用引用外部jar包 运行时报ClassNotFoundException 解决方法
- 开发商微信选房后不退认筹金_【震惊】胶州恒大文化旅游城项目爆丑闻!2000余人缴纳认筹金后竟有1800余户因对房子不满意提出退款...
- files函数提取文件名HTML,Javascript – 如何从文件input控件提取文件名
- js中while死循环语句_Java系列教程day06——循环语句
- java删除不,Java文件不能删除,该怎么解决
- java求100以内的a2 b2=c2,Java语言程序设计Ⅱ-中国大学mooc-试题题目及答案
- mysql group_concat distinct,如何在MySQL中使用GROUP_CONCAT和CONCAT与DISTINCT引用单列值?...
- dqn在训练过程中loss越来越大_[动手学强化学习] 2.DQN解决CartPole-v0问题
- kotlin将对象转换为map_在 Kotlin 的 data class 中使用 MapStruct
- c语言坐标三角形判断,【C语言】判断三角形类型(示例代码)