日期:2014-05-18  浏览次数:20800 次

求一个异步的 Socket(UDP方式)的通信程序
求一个   异步的   Socket(UDP方式)的通信程序。服务器端和客户端
异步的不需要考虑   线程和死锁问题,同步的自己有。所以求个异步UDP的,谢谢
信箱   lifeixie@163.com
谢谢!复制代码也成。最好发信箱

------解决方案--------------------
sf
------解决方案--------------------
C写的,UNIX环境下的要不?
------解决方案--------------------
struct timeval timeout = {7, 0};
fd_set readfds;
string strLog;

FD_ZERO(&readfds);
FD_SET(sd, &readfds);
rVal = select(sd + 1, &readfds, NULL, NULL, &timeout);
if(rVal <= 0)
{
if(rVal == 0)
{
printf( "RecvFrom TimeOut!\r\n ");
return 0;
}
else
{
strLog += "Recv Select Error! ";
}
perror( "select recv ");
return 0;
}
if(!(FD_ISSET(sd, &readfds)))
{
perror( "FD_ISSET recv ");
return 0;
}
rVal = recvfrom(sd, buffer, MAXBUFFER, 0, NULL, NULL);

------解决方案--------------------
给楼主发了一份。
注意查收!
------解决方案--------------------
http://www.codeproject.com/cs/internet/AsyncSocketServerandClien.asp
现成的source以及程序的详细说明,source保证能编译通过,不明白可以给作者发email。
------解决方案--------------------
这个程序分为多个部分,需要打开以后先编译一次,便以后会在debug下面生成多个exe程序,包括控制台的client和server,还有winform的client和server。

程序完全好用,已经用在项目中了。楼主参照一下。
------解决方案--------------------
发给你了。不过是控制台的。。。
------解决方案--------------------
最进老是看到有人要异步Socket
------解决方案--------------------
大家做过类似QQ那样的登陆吗 里面的代理那块的代码怎么写
大家帮下忙呀 花了2个星期拉也解决不了 QQ:305804380
------解决方案--------------------
异步UDP,我刚才试过,简单的代码
---发送
private void btnSend_Click(object sender, EventArgs e)
{
try
{
byte[] byteData = Encoding.UTF7.GetBytes(this.tbSend.Text.Trim());
this.m_soClient.BeginSendTo(byteData,0,byteData.Length,SocketFlags.None,
this.m_endPoint,new AsyncCallback(SendCallback),this.m_soClient);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void SendCallback(IAsyncResult ar)
{
Socket so = ar.AsyncState as Socket;
int Count = so.EndReceiveFrom(ar, ref this.m_endPoint);
//MessageBox.Show( "send complete! ");
}
--接受
private void btnListen_Click(object sender, EventArgs e)
{
StateObject data = new StateObject();
data.workSocket = this.m_soServer;
this.m_soServer.BeginReceiveFrom(data.buffer, 0, StateObject.bufferSize, SocketFlags.None,
ref this.m_endPoint, new AsyncCallback(ReadCallback), data);
}

private void ReadCallback(IAsyncResult ar)
{
StateObject data = ar.AsyncState as StateObject;

int nCount = data.workSocket.EndReceiveFrom(ar, ref this.m_endPoint);
if (nCount > 0)
{
string sTemp = Encoding.UTF7.GetString(data.buffer);