日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【过程记录 】windows和ubuntu两台电脑局域网进行socket通信收发数据和传输文件

發布時間:2024/9/30 windows 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【过程记录 】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通信收发数据和传输文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。