python的网络编程之什么是socket

编辑:光环大数据 来源: 互联网 时间: 2017-11-13 14:27 阅读:

  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培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服

你可能也喜欢这些

在线客服咨询

领取资料

X
立即免费领取

请准确填写您的信息

点击领取
#第三方统计代码(模版变量) '); })();
'); })();