热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pythonudp客户端无法获取数据_用Python实现UDP协议的ping程序(客户端和服务器端都在本地),服务器端套接字接受不到来自客户端的信息是为什么?...

20171012第一次修改问题现在不清楚的地方就是:采用127.0.0.1的主机IP可行,而采用另一种主机IP192.168.*.*却不行。防火墙120

2017/10/12第一次修改问题

现在不清楚的地方就是:采用 127.0.0.1 的主机IP可行,而采用另一种主机IP 192.168.*.* 却不行。

防火墙12001端口是开放的。

以下为原始问题

服务器端套接字调用recvfrom(1024)处于等待接受状态,客户端套接字调用了sendto方法,已经确认了IP地址和端口号是正确的。

实际运行后发现服务器端的套接字始终读取不到任何东西(.recvfrom(1024)一直没有读取到任何东西),但是客户端的.sendto()每次都是执行完毕的。

服务器端代码:

# UDPPingerServer.py

# We will need the following module to generate randomized lost packets

import random

from socket import *

# Create a UDP socket

# Notice the use of SOCK_DGRAM for UDP packets

serverSocket = socket(AF_INET, SOCK_DGRAM)

# Assign IP address and port number to socket

serverSocket.bind(('', 12001))

while True:

# Generate random number in the range of 0 to 10

rand = random.randint(0, 10)

# Receive he client packet along with address it is coming from

print('before recv')

message, address = serverSocket.recvfrom(1024)

print('after recv')

# Capitalize the message from the client

message = message.upper()

print('after upper')

# If rand is less than 4, we consider the packet lost and do not respond if

if rand <4:

continue

# Otherwise, the server responds

serverSocket.sendto(message, address)

客户端代码:

# encoding: utf-8

from socket import *

import time

serverName &#61; &#39;192.168.0.5&#39; # 服务器地址

serverPort &#61; 12001 # 服务器制定的端口

clientSocket &#61; socket(AF_INET, SOCK_DGRAM) # 创建UDP套接字&#xff0c;使用IPv4协议

clientSocket.settimeout(1) # 设置套接字超时值1秒

for i in range(0, 10):

sendTime &#61; time.time()

message &#61; (&#39;Ping %d %s&#39; % (i&#43;1, sendTime)).encode() # 生成数据报&#xff0c;编码为bytes以便发送

try:

print(&#39;before-send&#39;)

clientSocket.sendto(message, (serverName, serverPort)) # 将信息发送到服务器

print(&#39;after-send&#39;)

modifiedMessage, serverAddress &#61; clientSocket.recvfrom(1024) # 从服务器接收信息&#xff0c;同时也能得到服务器地址

print(&#39;after-recvd&#39;)

rtt &#61; time.time() - sendTime # 计算往返时间

print(&#39;Sequence %d:Reply from %s RTT &#61; %.3f&#39; % (i&#43;1, serverName, rtt)) # 显示信息

except Exception as e:

print(&#39;Sequence %d Request timed out&#39; % (i&#43;1))

clientSocket.close() # 关闭套接字

客户端程序代码中的IP地址是我本机固定的内网IP地址&#xff0c;是确信的。(另外我也用windows命令行的Ping功能Ping通了本机IP)

12001端口号没有被其他程序占用是确信的..(不然也无法运行&#xff0c;因为会提示10048错误)

如果问题描述有不清楚的地方请告知&#xff0c;谢谢。



推荐阅读
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 配置IPv4静态路由实现企业网内不同网段用户互访
    本文介绍了通过配置IPv4静态路由实现企业网内不同网段用户互访的方法。首先需要配置接口的链路层协议参数和IP地址,使相邻节点网络层可达。然后按照静态路由组网图的操作步骤,配置静态路由。这样任意两台主机之间都能够互通。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
author-avatar
灵动的音乐xl
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有