c#的udp连接无法连接,接收不到数据!

Hiro Pan 2009-05-23 12:15:51
我也是在网上找的,我要实现的是:我现在手上有个硬件应该是广播的那种,通过ip和端口监听得到硬件发送的数据,但是我测试了一个下午,也没有找到时那儿有问题!就是收不到数据,我用自己写的模拟服务器端可以进行通讯,这是源码:
using System;
using System.Collections;
using System.Net;
using System.Net.Sockets;
using System.Text;

public class SelectTcpClient
{
public static void Main()
{
Socket sock = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.1.12"), 1001);
byte[] data = new byte[1024];
string stringData;
int recv;

sock.Connect(iep);
Console.WriteLine("Connected to server");
recv = sock.Receive(data);
stringData = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine("Received: {0}", stringData);


while(true)
{
stringData = Console.ReadLine();
if (stringData == "exit")
break;
data = Encoding.ASCII.GetBytes(stringData);
sock.Send(data, data.Length, SocketFlags.None);
data = new byte[1024];
recv = sock.Receive(data);
stringData = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine("Received: {0}", stringData);
}
sock.Close();
}
}
哪位高手可以帮我看看!是什么原因!还是用的不对!该怎么写!
...全文
311 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
springe 2009-05-23
  • 打赏
  • 举报
回复
这个好像是TCP的吧
wanabe 2009-05-23
  • 打赏
  • 举报
回复
Socket sock = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
貌似你udp和TCP分不清阿。。
love_幸运儿 2009-05-23
  • 打赏
  • 举报
回复
Socket sock = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
你用的是UDP还是TCP,该写清楚吧.我这儿有一个UDP连接类

public static string serverIP = 服务端IP;
public static int serverPort = 服务端端口号;
//存储返回的数据
int returnCount = 0;
public static string localIP = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0].ToString();
public udpServer()
{
}
Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp);
/// <summary>
/// 客户端发送一条信息,返回一条相应的记录信息
/// </summary>
/// <param name="send_message">发送信息</param>
/// <param name="strReturn">是否有返回的值</param>
/// <returns>返回一个字节数组</returns>
public byte[] sendMessage(byte[] send_message, bool strReturn)
{
IPAddress selfIP = IPAddress.Parse(localIP);
IPEndPoint selfEP = new IPEndPoint(selfIP, 0);

IPAddress serIP = IPAddress.Parse(serverIP);
IPEndPoint serEP = new IPEndPoint(serIP, serverPort);

int count = 0;
EndPoint remort = (EndPoint)serEP;//接收从服务端返回的信息
socket.SendTo(send_message, send_message.Length, SocketFlags.None, serEP);//发送信息
if (strReturn == false)
{
return null;
}
byte[] result = new byte[1024];
byte[] newResult = null;
try
{
for (int i = 0; i < 6; i++)
{
System.Threading.Thread.Sleep(500);
if (socket.Available > 0)
{
count = socket.ReceiveFrom(result, result.Length, SocketFlags.None, ref remort);//接收指令
newResult = new byte[count];
Array.Copy(result, newResult, count);
break;
}
}
time.Enabled = false;
return newResult;
}
catch
{
return null;
}
}

wheeler 2009-05-23
  • 打赏
  • 举报
回复
监听应该是


Socket m_Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
m_Socket.Bind(new IPEndPoint(IP地址, 端口号));
m_Socket.Listen(100);
Socket socket = m_Socket.Accept();

byte[] bytes = new byte[1024];
while (m_Socket.Receive(bytes) > 0)
{
........
}

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧