利用socket建立TCP服务器和UDP服务器。
socket(简称 套接字) ,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程 socket.socket(AddressFamily, Type
建立TCP连接 服务器需要
1 建立socket对象2设置socker选项3绑定端口4侦听
下面具体来讲这四步的建立方法:
第一步,建立socket对象:这里与客户端一样,依然是:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
第二步,设置和得到socket选项
python定义了setsockopt()和getsockopt(),一个是设置选项,一个是得到设置。这里主要使用setsockopt(),具体结构如下:
setsockopt(level,optname,value)
level定义了哪个选项将被使用。通常情况下是SOL_SOCKET,意思是正在使用的socket选项。它还可以通过设置一个特殊协议号码来设置协议选项,然而对于一个给定的操作系统,大多数协议选项都是明确的,所以为了简便,它们很少用于为移动设备设计的应用程序。
S.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) 这里value设置为1,表示将SO_REUSEADDR标记为TRUE,操作系统会在服务器socket被关闭或服务器进程终止后马上释放该服务器的端口,否则操作系统会保留几分钟该端口。
1
2
3#socket options client = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_SCTP)
第三步:绑定socket
绑定即为服务器要求一个端口号。
S.bind((host,port)),其中host为服务器ip,通常为空,也可以绑定到一个特定的ip地址。Port为端口号。
第四步:侦听连接。
利用listen()函数进行侦听连接。该函数只有一个参数,其指明了在服务器实际处理连接的时候,允许有多少个未决(等待)的连接在队列中等待。作为一个约定,很多人设置为5。如:s.listen(5)
创建udp的套接字
s_gtpu = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
建立UDP连接 服务器需要 1 建立socket对象2设置socker选项3绑定端口4Recvfrom()
服务器端:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18import socket,traceback,time,struct host='' port=12345 s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) s.bind((host,port)) while 1: try: message,address=s.recvfrom(8192) secs=int(time.time()) reply=struct.pack("!I",secs) s.sendto(reply,address) except (KeyboardInterrupt,SystemExit): raise except: traceback.print_exc()
客户端:
1
2
3
4
5
6
7
8
9
10
11
12
13import socket,sys,struct,time host=raw_input('输入服务器地址:') port=12345 s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.sendto('',(host,port)) print "等待回复……" buf=s.recvfrom(2048)[0] if len(buf)!=4: print "回复错误%d:%s"%(len(buf),buf) sys.exit(1) secs=struct.unpack("!I",buf)[0] print time.ctime(int(secs))
最后
以上就是过时饼干最近收集整理的关于socket建立TCP连接 服务器需要创建udp的套接字的全部内容,更多相关socket建立TCP连接内容请搜索靠谱客的其他文章。
发表评论 取消回复