python-socket编程入门

  1. tcp udp  socket编程.  注意根据二者的有无连接对比.

注意: 以下的操作 存在顺序,显然要先bind,再listen嘛

TCP   server

(1)新建socket对象 s

s=socket.socket()

绑定地址,设置可接受的连接数量

s.bind( ('xxx.xxx.xxx.xxx',xxxx)  )    #ip地址和端口号

s.listen(5)

(3)获得一个客户端连接

Conn,address = s.accept()

 Conn是该链接的套接字,address为 ip:port

可以进行send or receive操作了

UDP server

在tcp 上,减去 s.listen 和 coon,addr =s.accept()

TCP client

新建socket 实例  s=socket.socket()  s.bind()///客户端也可以绑定端口,一般不推荐

连接到服务器   s.connet((‘ip’,port))

Udp server, 不需要s.connet((‘ip’,port))

000000000000000000000000000000000000000000000000000000

具体的 发送  和 接收

Send()  sendto(多加地址), Sendto(bytes,address)

Recv   recvfrom(多返回addr)

均返回bytes类型的datadata, addr = s.recvfrom(1024)

注意bytes 和strings 的类型转换:

字符编码:如ascII码, 不同的字符 对于 不同的asc 码.

Unicode也是一种码,两个byte 表示一个字符.

Utf-8 编码:节省空间:常用的英文字母被编码成1个字节,汉字通常是3个字节

内存中用unicode, 网络或者硬盘里 用 utf-8 编码

用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件   

同理.  注意:是在py3中

Python3中的str,在内存里为 unicode编码, 一个字符---多个byte

根据以上规则,在  网络传输 或者存在硬盘上  则要编成其他类型的码.

比如:  ‘abc’.encode(‘ascii’)   编为ASCII码 保存起来

Encode  ,decode

cs.send('byebye')

ra=cs.recv(512)

cs.close()

注意py3中 对bytes和strings 进行了 区分.

猜你喜欢

转载自www.cnblogs.com/zyhe/p/10009607.html