Python socket编程
正常的socketserver和socketclient
1.socket()函数
socket()函数用于创建与制定的服务提供者绑定的套接字
socket=socket.socket(family,type)
2.bind()函数
bind()函数可以将本地地址与一个Socket绑定在一起,函数原型如下:
socket.bind(address)
address是一个双元素元组(tuple),address=(host,port),host代表主机,port代表端口号。
3.listen()函数
listen()函数可以将套接字设置为监听接入连接的状态,函数原型如下:
listen(backlog)
参数backlog指定等待连接队列的最大长度。
4.accept()函数
在服务器端调用listen()函数监听接入连接后,可以调用accept()函数来等待接受连接请求。accept()的函数原型如下:
connection,address=socket.accept()
调用accept()方法后,socket会进入waiting状态。客户请求连接时,accept()方法会建立连接并返回服务器。accept()方法返回一个含有两个元素的元组(connection,address)。第一个元素connection是新的socket对象,服务器必须通过它与客户通信;第二个元素 address是客户的Internet地址。
5.recv()函数
调用recv()函数可以从已连接的Socket中接收数据。
buf=sock.recv(size)
参数sock是接收数据的socket对象,参数size制定接收数据的缓冲区的大小,recv()的函数的返回接收的数据。
6.send()函数
调用send()函数可以在已连接的Socket上发送数据,send()的函数原型入下:
sock.send(buf)
参数sock是在已连接的Socket上发送数据.
7.close()函数
close()函数用于关闭一个Socket,释放其所占用的所有资源。socket()的函数图原型入下:
sock.close()
基本的socket服务器和客户端:
#socketserve.py
import socket
import time
serve=socket.socket(AF_INET,SOCK_STREAM)
serve.bind(('localhost',8080))
serve.listen(5)
print('等待连接')
while True:
#接收来自客户端的连接
connection,address=serve.accept()
try:
connection.settimeout(5)
buf=connection.recv(1024).decode('utf-8')
if buf=='1':
connection.send(b'Welcome to serve')
else:
connection.send(b'please go out')
except s.timeout:
print('time out')
kkk
#socketclient.py
import socket
import time
client=socket.scoket(AF_INET,SOCK_STREAM)
client.connect(('localhost',8001))
time.sleep(2)
client.send(b'1')
print(client.recv(1024).decode('utf-8'))
client.close()
关于socket数据传输过程中的数据形式总结
a=opc.read('标签名')[0]
type(a)=float
a=int(a)
a=str(a)
socket.send(a) send的数据必须是字节或者字符串
opc.read()的结果返回一个数组[数值,类型...]
通过struct.pack和unpack可以转换字节流和python中的数据类型。