sokect网络编程

socket 基本流程:如下图

基于pyhton 3.5 的简单 socket 应用:

server.py

import socket
sk=socket.socket()
ip_port=('127.0.0.1',9999)
#绑定ip+协议+端口:用来唯一标识一个进程,ip_port必须是元组格式
sk.bind(ip_port)
sk.listen(5)
while True:
    conn,adress=sk.accept()  #conn:表示与客户端连接线路 可理解为 conn=sk.accept()[0]
    conn.send(bytes("Hello World", encoding = "utf8"))   #发送消息
    flag=True
    while flag:
        data=conn.recv(1024)         #接受的数据
        print(data)
        if data =='exit':
            flag=False
        conn.send(bytes("sb", encoding = "utf8"))
    conn.close()

client.py

import socket

client=socket.socket()
ip_port=('127.0.0.1',9999)
client.connect(ip_port)
while True:
    data=client.recv(1024)
    print(data)
    msg=input('client:请输入')
    client.send(bytes(msg, encoding = "utf8"))
    if msg=='exit':
        break

注意事项:

  • 1、套接字错误:python3.5版本后套接字只能发字节数(bytes),不能发字符串,在python2.7中支持发字符串形式(str)
  • 2、退出只在客户端退出就ok了
  • 3、accept()和s.recv()是堵塞(基于链接正常)
  • 4、listen(n):n代表:能挂起的链接数,如果n=1,代表可以链接的一个,挂起一个,第三个拒绝链接

socket 常用参数:

send() 

发送数据

python3.5:只支持字节方式传递 ,需要字符串转字节 --> bytes('xxx' ,encoding='utf-8')
python2.7:可以按照字符串方式传递 ,可以直接使用字符串

转载于:https://my.oschina.net/esdn/blog/827441

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值