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)的形式表示地址。
通过上节课的学习,我知道了其实原来网络编程对所有开发语言都是一样的,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)的形式表示地址。
相关文章推荐
- Python 网络编程操作TCP/UDP 初探(一)
- Python网络编程基础
- Python学习笔记16:网络编程
- python网络编程学习笔记(1)--网络编程背景
- Python网络编程:IO多路复用
- Python 网络爬虫 007 (编程) 通过网站地图爬取目标站点的所有网页
- Python网络编程:初探nltk与美汤结合处理网络数据
- Python案例-网络编程-socket-解决ssh消息粘包问题
- 网络编程-python
- python中网络编程
- [Python网络编程基础]第18章 CGI
- Python基础学习(5)网络编程socket、文件上传、粘包问题、socketserver、IO多路复用、线程与进程、进程池、线程池、上下文管理、协程
- 从零开始学Python第八周:网络编程基础(socket)
- Python网络编程之socket
- Python 网络爬虫 009 (编程) 通过正则表达式来获取一个网页中的所有的URL链接,并下载这些URL链接的源代码
- 【Python】学习笔记——-17、网络编程
- 运维学python之爬虫中级篇(四)网络编程
- python网络编程---服务端socketserver
- Dave Python 练习十九 -- 网络客户端编程
- Python网络编程