發現程式只RUN一次,即使我用CLIENT 端傳資料給SERVER端 它沒有任何動作1.Debug結果發現背景執行緒執行完就歸完主要執行緒2.曾在UdpWaitOnClient funtion裡加了if(MyUdpServer != null && UdpThread.IsAlive !=null)
接收二至三次 server端沒有接收3.若用while(tree) 則出現10055訊息:buffer空間不足
可以上網代表我寫程式的宣告變數占太大間嗎?public void udpConn()
{
try
{
MyUdpServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint ServerPoint = new IPEndPoint(IPAddress.Any, UdpPort); MyUdpServer.Bind(ServerPoint); UdpThread = new Thread(new ThreadStart(UdpWaitOnClient) );
UdpThread.Name = "UdpRec";
UdpThread.Start();
}public void UdpWaitOnClient()
{
Rec Data
}
接收二至三次 server端沒有接收3.若用while(tree) 則出現10055訊息:buffer空間不足
可以上網代表我寫程式的宣告變數占太大間嗎?public void udpConn()
{
try
{
MyUdpServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint ServerPoint = new IPEndPoint(IPAddress.Any, UdpPort); MyUdpServer.Bind(ServerPoint); UdpThread = new Thread(new ThreadStart(UdpWaitOnClient) );
UdpThread.Name = "UdpRec";
UdpThread.Start();
}public void UdpWaitOnClient()
{
Rec Data
}
http://www.google.com.hk/search?q=udpclient.receive&hl=zh-CN&newwindow=1&safe=strict&rls=com.microsoft:zh-cn:IE-SearchBox&prmd=fd&source=lnt&tbs=lr:lang_1zh-CN%7Clang_1zh-TW&lr=lang_zh-CN%7Clang_zh-TW&sa=X&ei=ezaoTIa1O4_CcdbcvM0N&ved=0CAcQpwU
udp默认值是最多一次只能接收64K字节,遇到更大的消息内容应该重新定义你的协议来解决。但是你没有一句明确的代码,看不出来什么地方会出现异常,也就不知道到底是怎么回事。
byte[] byteData = new byte[0x100];
private void UdpWaitOnClient( )
{
IPEndPoint ClinetOpen = new IPEndPoint(IPAddress.Any, 0);
EndPoint ClientRemo = (EndPoint)ClinetOpen;
// Data.UdpSocket Data = new Data.UdpSocket();// struct
while(true)
{
MyUdpServer.BeginReceiveFrom(byteData, 0, byteData.Length, SocketFlags.None, ref ClientRemo, new AsyncCallback(UdpRecCallback), ClientRemo);
}
}
}
}
還是在加 BackgroundWorker確保程式穩定..
byte[] byteData = new byte[0x100];
private void UdpWaitOnClient( )
{
IPEndPoint ClinetOpen = new IPEndPoint(IPAddress.Any, 0);
EndPoint ClientRemo = (EndPoint)ClinetOpen;
while(MyUdpServer!=null &&UdpThread.IsAlive!=null)
{
MyUdpServer.BeginReceiveFrom(byteData, 0, byteData.Length, SocketFlags.None, ref ClientRemo, new AsyncCallback(UdpRecCallback), ClientRemo);
}
}