本地连接接收数据包为零怎么办?

 网络的畅通是表现在既有发送包,也有接收包,只有来去都畅通才正常。但是如果只有发送,却没有接收,碰到这样的故障到底又是怎么回事呢?在笔者短暂的两年网管生涯中,出现了几次这样的故障,但他们发生的原因又各有不同。今天笔者就把一些解决方法奉献给大家。

  一般来说,出现这种故障的时候,网络连接都是都是好的,即不会出现红色的叉子图标。但这又只是一种表现的正常,因此我们入手的时候必须先从自身入手。

  从自身入手的第一点就是检查出现该故障前有没有安装过什么软件,有没有改过什么设置,尤其是杀毒软件、防火墙这一类的软件,因为设置不当就可能出现机器只发送不接收数据包的情况。接下来可以使用“Ping 127.0.0.1”对本地网卡的工作状态进行一个基础的判断,如果能够ping通则证明网卡是正常的。

  为了保险起见,建议大家在这种情况下还应该将TCP/IP重新安装一下。打开本地连接的属性窗口,然后单击“安装”按钮,在打开的组件窗口中选中“协议”项并打开添加窗口,选中“Microsoft”下的“Microsoft TCP/IP版本6”将TCP/IP重新安装一下。

  再一种情况就是10/100M自适应网卡的问题,尤其是集成网卡的低端机器,出现这种情况时不防将网直接设为10M。打开本地连接的属性窗口,在“常规”中单击网卡的“配置”按钮,切换到“高级”标签,将网速的速率设为10MB即可。

  一般来说,对于因为本地机器引发网卡数据只发不接收的原因就是这些了。如果这些问题都排查过了,问题仍然存在,那么则需要继续向下一层查找。

  继续向下一层查找问题,就是网络和交换机了。由于网线还是比较脆弱的,八根网线中的某一根很容易出现断裂,但是这时候外表还是很正常的,尤其是负责数据接收的网线出现断裂。为此在确认本机没有问题的情况下,则需要测试、更换网线,这样即可解决问题。

  由网线的故障可以引申出交换机的故障,当交换机某个模块或端口出现故障时同样会出现这种情况。因此,我们不防将对应的端口换一个试试,也许能够起到事半功倍的效果。不过对于划分了vlan的网络来说,随意更换端口同样会带来数据只能发不能收的情况,因此在更换的时候必须确定更换前后的端口都在同一个vlan之中。

  一般来说,遵循由本地开始检查,依次向外扩展,这样很容易就能够解决数据只能发送不能接收的故障。而在处理各种网络故障时,也都应遵循这样的顺序。对于出现的各种问题,大部分都是由于个人体操作不当所引发的,在处理之前先询问一下常常会有意想不到的收获。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为你提供一个简单的Java程序,实现UDP两个主机之间互相发送和接收数据包。 首先,你需要了解一下UDP协议和Java中的DatagramSocket和DatagramPacket类。UDP协议是一种无连接的协议,不保证可靠传输,但是传输速度快,适用于对实时性要求较高的场景。DatagramSocket和DatagramPacket是Java中用于实现UDP通信的类。 下面是一个简单的Java程序,实现两个主机之间互相发送和接收数据包: ```java import java.net.*; public class UDPSenderReceiver { public static void main(String[] args) throws Exception { int port = 12345; InetAddress receiverAddress = InetAddress.getByName("接收方主机IP地址"); DatagramSocket senderSocket = new DatagramSocket(); DatagramSocket receiverSocket = new DatagramSocket(port); Sender sender = new Sender(senderSocket, receiverAddress, port); Receiver receiver = new Receiver(receiverSocket); sender.start(); receiver.start(); } } class Sender extends Thread { private DatagramSocket senderSocket; private InetAddress receiverAddress; private int port; public Sender(DatagramSocket senderSocket, InetAddress receiverAddress, int port) { this.senderSocket = senderSocket; this.receiverAddress = receiverAddress; this.port = port; } public void run() { try { BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); while (true) { byte[] sendData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, receiverAddress, port); senderSocket.send(sendPacket); } } catch (Exception e) { e.printStackTrace(); } } } class Receiver extends Thread { private DatagramSocket receiverSocket; public Receiver(DatagramSocket receiverSocket) { this.receiverSocket = receiverSocket; } public void run() { try { while (true) { byte[] receiveData = new byte[1024]; DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); receiverSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); } } catch (Exception e) { e.printStackTrace(); } } } ``` 在程序中,我们创建了两个线程Sender和Receiver,分别用于发送和接收数据包。Sender从控制台读取用户输入的信息,并将信息发送给接收方主机;Receiver监听本地端口,接收来自发送方主机的数据包,并将数据包中的信息打印在控制台上。 你需要根据实际情况填写接收方主机的IP地址和端口号。在运行程序时,你可以在控制台上输入信息并发送给接收方主机,同时也可以接收来自接收方主机的信息。 以上就是一个简单的Java程序,实现UDP两个主机之间互相发送和接收数据包。希望能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值