tcp案例
客户端
import socket
def main():
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_port = int(input('请输入您要链接的服务器的端口号:'))
tcp_client_socket.connect(('192.168.10.4', client_port))
download_file_name = input('请输入要下载的文件名字:')
tcp_client_socket.send(download_file_name.encode('gbk'))
recv_data = tcp_client_socket.recv(1024)
if recv_data:
with open('[新]'+download_file_name, 'wb') as f:
f.write(recv_data)
tcp_client_socket.close()
if __name__ == '__main__':
main()
服务端
import socket
def send_file_2_client(new_client_socket, client_addr):
file_name = new_client_socket.recv(1024).decode('gbk')
print('客户端(%s)需要下载的文件是:%s' % (str(client_addr), file_name))
file_content = None
try:
f = open(file_name, 'rb')
file_content = f.read()
f.close()
except Exception as ret:
print('没有要下载的文件(%s)' % file_name)
if file_content:
new_client_socket.send(file_content)
def main():
tcp_sever_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_sever_socket.bind(('', 7788))
tcp_sever_socket.listen(128)
new_client_socket, client_addr = tcp_sever_socket.accept()
send_file_2_client(new_client_socket, client_addr)
new_client_socket.close()
tcp_sever_socket.close()
if __name__ == '__main__':
main()