要进行网络通讯,首先需要导入socket模块,后文也使用socket套接字进行实现。
使用socket时,一般分为3个步骤。
- 创建TCP套接字
- 使用socket套接字进行通讯
- 关闭套接字
socket套接字操作起来和file文件操作很类似,所以明白函数的意思就很容易上手。代码比较简单,先直接放上代码。
import socket
"""
服务器进程
等待客户端连接后,接收客户端发来的数据
回传客户端数据,确认收到
"""
def main():
tcp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建TCP套接字
tcp_server_socket.bind(("",7890))#绑定本地ip以及7890端口
tcp_server_socket.listen(128)#将套接字转为被动连接,变成服务器套接字
#print("---1---")
new_client_socket,client_addr=tcp_server_socket.accept()#阻塞状态,等待客户端接入
print(client_addr) #client_addr为客户端地址信息,new_client为返回与客户端连接的新的套接字
#print("---2---")
rec_data=new_client_socket.recv(1024) #接收数据
#print("---3---")
print(rec_data)
new_client_socket.send("ACCEPTED".encode("utf-8")) #发送数据给客户端,并解码
#print("---4---")
new_client_socket.close()
tcp_server_socket.close()
if __name__ == '__main__':
main()
启动服务器进程后等待客户端连接
import socket
"""
客户端进程
输入服务器的ip与port传输数据
"""
def main():
tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server_ip=input("please input ip:")
server_port=int(input("please input port:"))
server_addr=(server_ip,server_port)#connect方法参数为目标地址元组
tcp_socket.connect(server_addr)
send_data=input("please input message: ")
tcp_socket.send(send_data.encode("utf-8"))#发送数据
data=tcp_socket.recv(1024)#
print(data)
tcp_socket.close()
if __name__ == '__main__':
main()
我是分别使用windows和虚拟机上的ubuntu进行验证的。
运行服务器进程后,再启动客户端,输入相应的地址即可进行连接。