服务端:
#!/usr/bin/python
import socket
from time import ctime
s=socket.socket() #默认AF_INET,SOCK_STREAM
add=('',5050) # ''为空表示可以使用任何地址
s.bind(add)
s.listen(5) #大于1即可,一般取5
print "start service process"
while True:
c,addf=s.accept()
print "the client is:",addf
while True: #循环接收消息
res=c.recv(1024)
if not res:
break
c.send((ctime()+": "+data))
c.close()
s.close() #关闭socket,此处虽然无效,用于提示使用
客户端:
#!/usr/bin/python
import socket
s=socket.socket()
host='localhost' #or socket.gethostname(), or '127.0.0.1'
add=(host,5050)
s.connect(add)
data=raw_input('> ')
s.send(data)
res=s.recv(1024)
if not res:
break
print res
s.close()
服务端和客户端的执行结果分别如下:
socket通信时,服务器的通信端口号必须要同时在服务端程序和客户端程序中指定清楚,这样客户端才能根据IP地址和端口号访问服务器;而客户端的端口是随机分配的,不需要特别指定。
端口号有效范围0-65525,其中
常用端口号:0~256
TCP/IP服务端口号:1~1023
TCP/IP临时端口号:1024~5000
预留端口号:5000+