急!!请问,我做C和JAVA做UDP通信程序,客户端接收不到数据,但是可以发送~~弄了好久了,求谁帮帮我

急!!请问,我做C和JAVA做UDP通信程序,客户端接收不到数据,但是可以发送~~弄了好久了,求谁帮帮我,第1张

在同一台设备上,直接调用的函数么?这种情况用回环地址。

MAC、IP、目的端口对了没(不在同一台设备、自己实现协议)、再不在同一个网段?

确定你实现的协议格式是不是对的、在不在一个网段,如果确定都没问题,那么建议你禁止错误帧丢弃这个功能。用wireshark抓包分析。

这个问题产生的原因是因为编码不一致导致的,如果数据包中包含中文,建议使用UTF-8传输,只含有英文可以使用ISO-8859-1,您可以尝试getBytes("ISO-8859-1"),接收的时候也可以带上编码String info = new String(dpgetData(), 0, dpgetLength(),"ISO-8859-1"); getBytes()在不同系统之间得到的数据很有可能是不同的。

//这是一个源码你看看

using System;

using SystemNet;

using SystemNetSockets;

using SystemText;

using SystemThreading;

using SystemWindowsForms;

namespace UDPClient

{

public partial class frmUdp : Form

{

private UdpClient sendUdpClient;

private UdpClient receiveUpdClient;

public frmUdp()

{

InitializeComponent();

IPAddress[] ips = DnsGetHostAddresses("");

tbxlocalipText = ips[3]ToString();

int port = 51883;

tbxlocalPortText = portToString();

tbxSendtoIpText = ips[3]ToString();

tbxSendtoportText = portToString();

}

// 接受消息

private void btnReceive_Click(object sender, EventArgs e)

{

// 创建接收套接

IPAddress localIp = IPAddressParse(tbxlocalipText);

IPEndPoint localIpEndPoint = new IPEndPoint(localIp, intParse(tbxlocalPortText));

receiveUpdClient = new UdpClient(localIpEndPoint);

Thread receiveThread = new Thread(ReceiveMessage);

receiveThreadStart();

}

// 接收消息方法

private void ReceiveMessage()

{

IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddressAny, 0);

while (true)

{

try

{

// 关闭receiveUdpClient时此时会产生异常

byte[] receiveBytes = receiveUpdClientReceive(ref remoteIpEndPoint);

string message = EncodingUnicodeGetString(receiveBytes);

// 显示消息内容

ShowMessageforView(lstbxMessageView, stringFormat("{0}[{1}]", remoteIpEndPoint, message));

}

catch

{

break;

}

}

}

// 利用委托回调机制实现界面上消息内容显示

delegate void ShowMessageforViewCallBack(ListBox listbox, string text);

private void ShowMessageforView(ListBox listbox, string text)

{

if (listboxInvokeRequired)

{

ShowMessageforViewCallBack showMessageforViewCallback = ShowMessageforView;

listboxInvoke(showMessageforViewCallback, new object[] { listbox, text });

}

else

{

lstbxMessageViewItemsAdd(text);

lstbxMessageViewSelectedIndex = lstbxMessageViewItemsCount - 1;

lstbxMessageViewClearSelected();

}

}

private void btnSend_Click(object sender, EventArgs e)

{

if (tbxMessageSendText == stringEmpty)

{

MessageBoxShow("发送内容不能为空","提示");

return;

}

// 选择发送模式

if (chkbxAnonymousChecked == true)

{

// 匿名模式(套接字绑定的端口由系统随机分配)

sendUdpClient = new UdpClient(0);

}

else

{

// 实名模式(套接字绑定到本地指定的端口)

IPAddress localIp = IPAddressParse(tbxlocalipText);

IPEndPoint localIpEndPoint = new IPEndPoint(localIp, intParse(tbxlocalPortText));

sendUdpClient = new UdpClient(localIpEndPoint);

}

Thread sendThread = new Thread(SendMessage);

sendThreadStart(tbxMessageSendText);

}

// 发送消息方法

private void SendMessage(object obj)

{

string message = (string)obj;

byte[] sendbytes = EncodingUnicodeGetBytes(message);

IPAddress remoteIp = IPAddressParse(tbxSendtoIpText);

IPEndPoint remoteIpEndPoint = new IPEndPoint(remoteIp, intParse(tbxSendtoportText));

sendUdpClientSend(sendbytes, sendbytesLength, remoteIpEndPoint);

sendUdpClientClose();

// 清空发送消息框

ResetMessageText(tbxMessageSend);

}

// 采用了回调机制

// 使用委托实现跨线程界面的 *** 作方式

delegate void ResetMessageCallback(TextBox textbox);

private void ResetMessageText(TextBox textbox)

{

// ControlInvokeRequired属性代表

// 如果控件的处理与调用线程在不同线程上创建的,则为true,否则为false

if (textboxInvokeRequired)

{

ResetMessageCallback resetMessagecallback = ResetMessageText;

textboxInvoke(resetMessagecallback, new object[] { textbox });

}

else

{

textboxClear();

textboxFocus();

}

}

// 停止接收

private void btnStop_Click(object sender, EventArgs e)

{

receiveUpdClientClose();

}

// 清空接受消息框

private void btnClear_Click(object sender, EventArgs e)

{

thislstbxMessageViewItemsClear();

}

}

}

以上就是关于急!!请问,我做C和JAVA做UDP通信程序,客户端接收不到数据,但是可以发送~~弄了好久了,求谁帮帮我全部的内容,包括:急!!请问,我做C和JAVA做UDP通信程序,客户端接收不到数据,但是可以发送~~弄了好久了,求谁帮帮我、java udp协议 16进制转换、关于c#中UDP编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9970260.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存