tcp客户端发送/接收数据流程:
1、创建套接字
2、绑定本地端口(客户端也就可以不绑定,不绑定时系统随机开启一个端口)
3、连接服务器地址
4、发送或接收服务器数据
5、关闭套接字
tcp发送数据实例:
import socket
# 定义服务器连接函数
def tcpclient_to_sever(tcp_soctet):
addr = input("请输入服务器地址:")
addr_port = int(input("请输入服务器地址的端口:"))
tcp_soctet.connect((addr,addr_port))
def main():
# 创建套接字
tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcpclient_to_sever(tcplitsen_socket)
while True: # 循环发送数据
send_data = input("请输入要发送的内容:")
tcp_socket.send(send_data.encode("gbk"))
if send_data == "exit":
break
# 关闭套接字
tcp_socket.close()
if __name__ == "__main__":
main()
测试:
tcp服务器发送或接收数据流程:
1、创建监听套接字
2、绑定本地端口号(必须)
3、listen开始TCP连接监听
4、accep 被动接受TCP客户端连接,(阻塞式)等待连接的到来,连接到来时创建于客户端通信的套接字
5、接收客户端数据/发送客户端数据
6、关闭客户端通信的套接字套接字
7、关闭监听套接字
import socket
def main():
# 创建套接字,使用ipv4 tcp连接
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定端口
tcp_socket.bind(("",12335))
# 侦听客户端连接
tcp_socket.listen(125)
#
while True:
# conn是与客户端通信所用的套接字 addr为ip地址与端口的元组
conn,addr = tcp_socket.accept()
print(str(addr))
# 循环接收tcp客户端信息
while True:
recv_date = conn.recv(1024)
print(recv_date.decode("gbk"))
# 当recv_date中没有数据时,代表客户端调用了close方法断开连接
if recv_date:
conn.send(b"hello")
else:
break
conn.close()
# 关闭套接字
tcp_socket.close()
if __name__ == "__main__":
main()
测试: