基于socket實作用戶端和伺服器發資訊
用戶端代碼
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import socket,os
obj = socket.socket()
obj.connect(("124.232.137.135", 9999))
ret_bysts = obj.recv(1024)
print(str(ret_bysts,encoding='utf8'))
while True:
s = input("輸入發送的内容:")
obj.sendall(bytes(str(s),encoding='utf8'))
伺服器端代碼
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import socket
sk = socket.socket()
sk.bind(('124.232.137.135',9999))
sk.listen(5)
###使用者一連接配接就傳回歡迎界面
address = sk.accept()
address[0].sendall(bytes('歡迎登陸Fer FTP',encoding='utf8'))
while True:
ret_bysts = address[0].recv(1024)
cao = str(ret_bysts,encoding='utf8')
print(cao)
基于socket實作用戶端和伺服器發檔案
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import socket,os,time
obj = socket.socket()
obj.connect(('127.0.0.1',9999))
ret_bysts = obj.recv(1024)
print(str(ret_bysts,encoding='utf8'))
#發送檔案大小
file_size = os.stat('a')
obj.sendall(bytes(str(file_size.st_size),encoding='utf8'))
obj.recv(1024)#解決粘包問題。接收伺服器端發來的ACK
with open('a','rb') as f:
for i in f:
obj.sendall(i)
f.close()
伺服器端代碼
#!/usr/bin/env python
import socket
sk = socket.socket()
sk.bind(('127.0.0.1',9999))
sk.listen(5)
###使用者一連接配接就傳回歡迎界面
conn,address = sk.accept()
conn.sendall(bytes('歡迎登陸Fer FTP',encoding='utf8'))
ret_bysts = conn.recv(1024)
cao = str(ret_bysts, encoding='utf8')
conn.sendall(bytes('ack', encoding='utf8'))
接收檔案大小
回複Ack給用戶端開始發檔案内容
s = int(cao)
p = 0
f = open('b.txt', 'wb')
while True:
if p == s:
break
data = conn.recv(1024)
f.write(data)
p += len(data)