您的位置:首页 > 理论基础 > 计算机网络

Python网络编程

2018-01-23 22:08 183 查看
1.Python网络编程

通过上节课的学习,我知道了其实原来网络编程对所有开发语言都是一样的,Python也不例外。用Python进行网络编程,就是在Python程序本身这个进程内,连接别的服务器进程的通信端口进行通信。

2.socket()函数

Python网络编程主要基于socket实现,通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标的计算机的IP地址和端口号,再指定协议类型就可以了。

3.服务端案例

import socket

import threading
#服务器端 TCP面向连接

servessoket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

servessoket.bind(('172.16.0.111',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())

4.客户端案例

import socket

import threading

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

client.connect(('172.16.0.112',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())

5.函数

s.recv()接收TCP数据,数据以字符串形式返回,bufsize指定要接收的最大数据量。flag提供有关消息的其它信
息,通常可以忽略。

 s.send()发送TCP数据,将string中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于string的字节大小。

 s.sendall()完整发送TCP数据,完整发送UDP数据。将string中的数据完整发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常。

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

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

 s.bind()绑定地址(host,port)到套接字,在AF_INET以下,以元组(host,port)的形式表示地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: