使用SOCKET通信的客户端,向服务器端发送数据。需要先BeginConnect,还是直接BeginSendTo就可以了?
解决方案 »
- c# winform reportViewer显示报表的时候,页数老是不对
- 关于xml文件存储方法名的问题
- 数据更新出错呢
- winform中DataGridView有没实现分页功能的属性??
- 如何做一个登录验证呢?
- BindingDataSource只能修改数据不能添加数据?
- 监视文件夹
- 谁有DotFuscator 1.2专业版的注册码?共享一下
- winform 的表格效果
- 1个主页面,平分为4个子页面,怎么写框架frameset--在线ing
- 用VS2008打开项目是出现“‘GetWinFXPath’任务的声明或使用不正确,或在构造过程中失败。”的错误该怎样解决 急
- DataGridView绑定数据源后列之间如何排序?
IPHostEntry lipa = Dns.Resolve("host.contoso.com");
IPEndPoint lep = new IPEndPoint(lipa.AddressList[0], 11000); Socket s = new Socket(lep.Address.AddressFamily,
SocketType.Stream,
ProtocolType.Tcp);
try{
while(true){
allDone.Reset(); byte[] buff = Encoding.ASCII.GetBytes("This is a test");
Console.WriteLine("Sending Message Now..");
s.BeginSendTo(buff, 0, buff.Length, 0, lep, new AsyncCallback(Async_Send_Receive.SendTo_Callback), s); allDone.WaitOne();
}
}
catch (Exception e){
Console.WriteLine(e.ToString());
}
如果当前使用的是面向连接的协议,则必须首先调用 Connect、BeginConnect、Accept 或 BeginAccept 方法,否则 BeginSendTo 将会引发 SocketException。BeginSendTo 将会忽略 remoteEP 参数并将数据发送给在 Connect、BeginConnect、Accept 或 BeginAccept 方法中建立的 EndPoint。如果当前使用的是无连接协议,则在调用 SendTo 之前,不需要使用 Connect 或 BeginConnect 方法来建立默认远程主机。仅当打算调用 BeginSend 方法时,才需要这样做。如果在调用 SendTo 之前确实调用了 Connect 或 BeginConnect 方法,则 remoteEP 参数将只为该发送操作重写指定的默认远程主机。此外,您还不需要调用 Bind 方法。在这种情况下,基础服务提供程序将会分配最合适的本地网络地址和端口号。如果您希望基础服务提供程序选择可用端口,请使用端口号 0。如果需要标识分配的本地网络地址和端口号,可以在 EndSendTo 方法成功完成后使用 LocalEndPoint 属性。
如果使用UDP,可以直接发送,不需要建立链路
使用 while(true){}这个死循环会不停地发送吗?
2楼的基本正确,来自MSDN。如果使用面向连接,必须先CONNECT