pyhton的socket模块可以实现网络编程开发,首先我们介绍一下需要用到的方法:
socket.socket():建立socker套接字,两个参数,family代表家族.type代表类型,type默认TCP
socket.bind():服务器端,接受的参数是元组,不是传递host,port两个元素,而是(host,port)
socket.listen():一个参数,值为允许客户端连接服务器的排队上线,如果超过挂起上限则会拒绝掉
socket.accept():无参数,其返回值是一个元组,第一个是新的套接字对象,第二个是地址
clnt.recv(1024):参数内设置为一次接收的数据,即字节
socket.connect():客户端,与bind对应,接受的也是元组
下面我们来看服务器端的demo代码
# -*- coding:utf-8 -*-
#服务器端
import socket
host='127.0.0.1' #IP
port=5000 #端口,不能引号
#family代表家族.type代表类型,默认TCP
#s=socket.socket(family,type)
s=socket.socket()#创建套接字
#s.bind(host,port)#接受的参数是元组,这样不可以
s.bind((host,port))
s.listen(5)#值是允许客户端连接服务器排队上限,如果超过挂起上限则会拒绝掉
print 'Server open~'
clnt,addr=s.accept()#accept()返回是一个元组,第一个是新的套接字对象,第二个是地址
print 'cline address :',addr
while True:
data=clnt.recv(1024)#一次接收的数据,1024字节
print data
clnt.sendall(data)
s.close()
然后再看客户端demo代码
# -*- coding:utf-8 -*-
#客户端
import socket
host='127.0.0.1' #IP
port=5000 #端口,不能引号
s=socket.socket()
s.connect((host,port))#接收的也是元组
while True:
cmd=raw_input('please input :')
if cmd=='quit':
break
s.sendall(cmd)
data=s.recv(1024)
print data
s.close()