Python socket基础知识

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中的数据类型。

你可能感兴趣的:(Python socket基础知识)