基于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

# -*- coding:utf-8 -*-
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)
f.close()