python3 网络编程

网络编程

Python提供了两个级别访问的网络服务:

     低级别的网络服务支持基本的Socket,它提供了标准的BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。

高级别的网络服务模块SocketServer,它提供了服务器中心类,可以简化网络服务器的开发。

1,Scoket又称‘套接字’,应用程序通常通过‘套接字’向网络发出请求或者答应网络请求,使主机间或者一台计算机上的进程间可以通讯。

2,python用socket()函数来创建套接字,语法格式如:socket.socket([family[, type[, proto]]])

参数:

   family: 套接字家族可以使用AF_UNIX 或者 AF_INET

   type:   套接字类型可以根据面向连接的还是非连接分为SOCK_STREAM或SOCK_DGRAM

   protocol:一般不填默认为0


3,例子

服务端代码

import socket
import threading
#服务器端 TCP面向连接
servessoket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
servessoket.bind(('172.16.0.114',9999))#绑定服务地址和端口号
servessoket.listen(5)#监听,最多可连接5个客户端
print('正在等待客户端。。。')
c=servessoket.accept()#等待接收客户端,c是元组表示得到客户端的地址和端口
print(c)

def myrerv(c):
    while True:
        msg=c[0].recv(1024)#接收消息、
        print(msg.decode())#decode解码
threading._start_new_thread(myrerv,(c,))

def myinput():#发送消息
    while True:
        msg=input()
        c[0].send(msg.encode())#encode编码
threading._start_new_thread(myinput())
客户端代码
import socket
import threading

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('172.16.0.113',9999))
print('客户端已连接。。。')

def myrerv(c):
    while True:
        msg=c.recv(1024)#接收消息
        print(msg.decode())
threading._start_new_thread(myrerv,(client,))

def myinput():
    while True:
        msg =input()
        client.send(msg.encode())
threading._start_new_thread(myinput())
4,函数   
    a,s.recv()接收TCP数据,数据以字符串形式返回,bufsize指定要接收的最大数据量。flag提供有关消息的其它信息,通常可以忽略。
   b, s.send()发送TCP数据,将string中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于string的字节大小
   c, s.sendall()完整发送TCP数据,完整发送UDP数据。将string中的数据完整发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常

d,s.connect()主动初始化TCP服务器连接,一般address的格式为元组(hostname,port),如果连接出错,返回socket.error错误

e, s.listen()开始TCP监听。backlog指定在拒绝之前,操作系统可以挂起的最大连接数量。该值至少为1,大部分应用程序设为5就可以了。

f, s.bind()绑定地址(host,port)到套接字,在AF_INET以下,以元组(host,port)的形式表示地址



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值