socket通信

python学习网 2017-11-28 13:17:02

注意 socket通信默认的情况下是属于阻塞形式通信,在recv与accept函数会进行阻塞

  1.客户端正常退出的情况下,server端的con的通道会正常的关闭,recv直接赋值为空

  2.在windows下,使用pycharm的强制终端客户端,会造成,con通道的破坏,造成服务器端的异常(可以通过捕获异常来避免),在linux程序端,不会出现该问题

  3.在发送数据的时候,send为空的情况下,在recv下,默认就是不处理,还处在阻塞的状态。 因此规定不能发送为空

  4.socket通信的在py3里面,只能发送bytes类型  str-->bytes: bytes(str,"utf-8")  

                       bytes-->str:str(bytes"utf-8")

1.基础代码

server端:

 

import socket
server = socket.socket()
server.bind(("127.0.0.1",6969))
server.listen()

con,addr=server.accept()
while True:
    data=con.recv(1024)
    data_uper=str(data,"utf-8").upper()
    con.send(bytes(data_uper,"utf-8"))
View Code

 

client端

import socket
client = socket.socket()
client.connect(('127.0.0.1',6969))
x=input(">>:")
client.send(bytes("good 你好",encoding="utf-8"))
data=client.recv(1024)
print(str(data,"utf-8"))
View Code

 

阅读(792) 评论(0)