python的网络编程之什么是socket
python的网络编程之什么是socket。什么是socket?
Socket是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于Socket来完成通信的,例如我们每天浏览网页、QQ聊天、收发email等等。要解决网络上两台主机之间的进程通信问题,首先要唯一标识该进程,在TCP/IP网络协议中,就是通过(IP地址,协议,端口号)三元组来标识进程的,解决了进程标识问题,就有了通信的基础了。
创建socket
首先要创建socket,用Python中socket模块的函数socket就可以完成:
importsocket#forsockets
#createanAF_INET,STREAMsocket(TCP)
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
函数socket.socket创建一个socket,返回该socket的描述符,将在后面相关函数中使用。该函数带有两个参数:
AddressFamily:可以选择AF_INET(用于Internet进程间通信)或者AF_UNIX(用于同一台机器进程间通信)
Type:套接字类型,可以是SOCKET_STREAM(流式套接字,主要用于TCP协议)或者SOCKET_DGRAM(数据报套接字,主要用于UDP协议)我们写一个聊天的功能来举例子
先创建一个服务套接字,让其他的机器连接
importsocket
importthreading
#创建服务套接字
ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print("建立服务套接字")
ss.bind(("localhost",9999))
print("绑定端口和主及")
ss.listen(5)
print("开始等待客户的请求")
c=ss.accept()
print("某个用户连接了我")
defmyrecv(c):
whileTrue:
msg=c[0].recv(1024)
print(msg.decode())
threading._start_new_thread(myrecv,(c,))
whileTrue:
msg=input()
c[0].send(msg.encode())
再创建一个连接主机的服务
importsocket
importthreading
#创建客户套接字
c=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print("创建客户套接字")
c.connect(("192.168.11.59",9999))
print("连接成功")
defmyrecv(c):
whileTrue:
msg=c.recv(1024)
print(msg.decode())
threading._start_new_thread(myrecv,(c,))
whileTrue:
msg=input()
c.send(msg.encode())
这样就完成了一个1v1的聊天功能,如果想要实现多人聊天的话,需要一个服务器端。
importsocket
importthreading
ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ss.bind(("0.0.0.0",9999))
ss.listen(10)
msg=None
lock=threading.Lock()
con=threading.Condition(lock)
defserver_recv(c,a):
globalmsg
whileTrue:
msg1=c.recv(3000)
con.acquire()
msg=msg1
msg=str(a)+msg1.decode()
con.notify_all()
con.release()
defserver_send(c,a):
globalmsg
whileTrue:
con.acquire()
con.wait()
con.release()
c.send(msg.encode())
whileTrue:
c,a=ss.accept()
threading._start_new_thread(server_recv,(c,a))
threading._start_new_thread(server_send,(c,a))
这样多人聊天就创建好啦,如果想要了解更多,可以去https://www.runoob.com/python/python-socket.html里面看
Python培训、Python培训班、Python培训机构,就选光环大数据!
大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服!