tcp服务器


import socket

1. 建立套接字

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

2为了防止服务器不能立马重新使用相应的端口 设置套接字地址重用选项

server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# 绑定端口

server_socket.bind(("", 8080))

# 监听服务器人数

server_socket.listen(128)

while True:

# 从服务器去一客户

    client_socket, client_address = server_socket.accept()

受到%s链接" % str(client_address))

    #客服使用分级交流

    data = client_socket.recv(4096)

    if data:

消息%s" % data.decode())

        client_socket.send(data)

    else:

断开链接")

client_socket.close()


tcp客户端

import socket

# 创建一个套接字 网络地址协议族IPv4 流式报文

tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 2建立和远程服务器的连接  参数是 服务器的IP地址和端口构成的元组

tcp_socket.connect(('192.168.90.108', 8080))

# 3 进行交流(说听)

data = input("请输入你想说的:")

#发送数据()

tcp_socket.send(data.encode())

# recv接收数据 参数就是本次接收数据的最大长度

recv_data = tcp_socket.recv(4096)

返回值就是 接收到的decode

print("接收到数据%s" % recv_data.decode())

# 4断开连接 释放套接字资源

tcp_socket.close()

 

tcp文件下载服务器

    

import socket
def read_file_data(file_name):
     try:
         file = open(file_name, "rb")
     except Exception as e:
         print("文件不存在")
     else:
         file_data = file.read()
         return file_data
# 建立服务器套接字server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#绑定ip 端口server_socket.bind(("", 8888))
# 监听对象server_socket.listen(128)
while True:
# 服务器获取一个客户
    client_socket, client_address = server_socket.accpet()
     print("收到%s链接" % str(client_address))
     # 接受文件 提取文件
    file_name = client_socket.recv(4096)
     # 根据文件名取文件数据
    data = read_file_data(file_name)

     if data:
         client_socket.send(data)
     client_socket.close()
 server_socket.close()



 

 

tcp文件下载客户端

import socket

import os

# 创建套接字

tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 创建服务器链接

id = input("输入链接id号")

port = input("输入端口号")

tcp_socket.connect((id, port))

# 下载文件名字

file_name = input("下载文件名字")

# 发送下载文件名字

tcp_socket.send(file_name.encode())

# 循环接受文件数据  保存本地

file = open("new" +file_name, "wb")

had_write_len = 0

while True:

接受文件

    data = tcp_socket.recv(4096)

    if data:

        file.write(data)

        had_write_len += len(data)

    else:

        file.close()

        tcp_socket.close()

        if had_write_len > 0:

文件传输完成")

        else:

删除空文件

            os.remove("new" + file_name)

文件不存在")

        break