首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >套接字使用随机端口,我需要一个特定的端口。

套接字使用随机端口,我需要一个特定的端口。
EN

Stack Overflow用户
提问于 2020-11-14 12:09:59
回答 2查看 79关注 0票数 1

问题是,我想在特定端口的两个网络中的两台计算机之间创建一个连接,但是当我运行运行时,我得到了一条消息,它每次显示不同的端口:

代码语言:javascript
运行
复制
Accepted a connection request from 192.168.1.2:**12345**
DATA

,这是侦听代码:

代码语言:javascript
运行
复制
import socket
import logging 


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

serverSocket.bind(("**server's Local ip**",6464))

serverSocket.listen(1)

while(True):
    
    (clientConnected, clientAddress) = serverSocket.accept()
    print("Accepted a connection request from %s:%s"%(clientAddress[0], clientAddress[1])) #[0], ...[1]
    dataFromClient = clientConnected.recv(1024)
    print(dataFromClient.decode())

    clientConnected.send("Hello User".encode())
    user = dataFromClient
    cip = clientAddress
    LOG_FILENAME = '/home/user/listenlog.txt'
    logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG)
    logging.debug(cip)
    logging.debug(user)
    logging.debug("--------------------------------------------------------")

,这是客户端代码:

代码语言:javascript
运行
复制
import socket

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

clientSocket.connect(("**Server's IP**",6464))


data = 'Hello'


clientSocket.send(data.encode())

dataFromServer = clientSocket.recv(1024)

print(dataFromServer.decode())

如何使使用端口保持静态?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-07 09:55:05

如果您得到的连接是公共的,nat后面的连接通常是随机端口,因为它来自isp或nat设备,所以我认为这不是本地的。

票数 1
EN

Stack Overflow用户

发布于 2020-11-14 12:14:04

如果希望将客户端的套接字绑定到特定端口,则可以在对其调用connect()之前在套接字上调用bind()。

但是,请注意,这样做通常没有好处。缺点是,如果该端口已经在使用,bind()调用将失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64833730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档