- 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 进行了 区分.