tcp接口的基本用法

2020年6月6日 / 35次阅读 / Last Modified 2020年10月20日
socket

本文转一篇python中tcp接口的基本用法说明,包括建立tcp server,以及客户端发起tcp连接。

tcp server

如果持续监听被认为是server的特性的话,那执行监听的就可以说成是tcp server。

#首先创建服务端
#首先需要导入socket模块,否则无法使用
import socket

#创建套接字对象,使用IPV4进行通信,类型流式套接字
tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#设置套接字,释放端口后可以立即使用,提高效率
tcp_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,True)

#一般会绑定一个端口号,便于连接,IP地址则不需要
tcp_server.bind((’’ , 10000))

#进入监听模式,转为被动,等待连接,最大等待数128
tcp_server.listen(128)

#此时会进入等等连接的模式,需要有客户端与服务端建立连接才可以继续执行
#建立连接后会创建一个新的连接对象和与自身建立连接的IP地址和端口号,以元祖的形式
new_tcp, ip_port = tcp_server.accept()

#使用连接新对象进行接收和发送操作,获取到的数据需要解码,发送的数据也需要编码
data_recv = new_tcp.recv(1024)
new_tcp.send()

#程序最后关闭套接字对象
new_tcp.close()
tcp_server.close()

tcp client

主动发起连接的一般都是客户端。

#接下来建立客户端
#客户端首先也是导入模块
import socket

#创建套接字对象,和服务端一样
tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#端口复用,释放就可以使用
tcp_client.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)

#与服务端建立连接,以元祖的形式传入ip地址和端口号,ip地址以字符串的形式传入
tcp_client.connect((‘127.0.0.1’,10000))

#与服务端端收发消息,收到的数据需要解码,发送的数据需要进行编码
data_recv = tcp_client.recv(1024)
tcp_client.send()

#在程序最后关闭套接字对象
tcp_client.close()

-- EOF --

本文链接:https://www.pynote.net/archives/2057

留言区

《tcp接口的基本用法》有4条留言

电子邮件地址不会被公开。 必填项已用*标注

  • 麦新杰

    server tcp的目的就是产生另一个跟client tcp一样的beast。 [回复]

  • 麦新杰

    Now we come to the major stumbling block of sockets - send and recv operate on the network buffers. They do not necessarily handle all the bytes you hand them (or expect from them), because their major focus is handling the network buffers. In general, they return when the associated network buffers have been filled (send) or emptied (recv). They then tell you how many bytes they handled. It is your responsibility to call them again until your message has been completely dealt with. [回复]

  • 麦新杰

    Finally, the argument to listen tells the socket library that we want it to queue up as many as 5 connect requests (the normal max) before refusing outside connections. If the rest of the code is written properly, that should be plenty. [回复]

  • 麦新杰

    注意bind函数可以没有ip地址,效果跟0.0.0.0一样的。 [回复]


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top