由于套接字未连接,发送或接收数据的请求被拒绝
本文关键字:数据 请求 拒绝 套接字 连接 | 更新日期: 2023-09-27 18:12:05
所以我试图发送一个数据包,但我一直得到这个错误
任何帮助都太棒了!
非常感谢!
错误信息:发送或接收数据的请求被拒绝,因为套接字未连接并且(当使用sendto调用在数据报套接字上发送时)未提供地址
代码: private void button1_Click(object sender, EventArgs e)
{
byte[] packetData = Encoding.ASCII.GetBytes(textBox1.Text);
const string ip = "127.0.0.1";
const int port = 5588;
var ep = new IPEndPoint(IPAddress.Parse(ip), port);
var client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.SendTo(packetData, ep);
}
}
}
var client = new Socket(AddressFamily. net)互联网络,SocketType。流,ProtocolType.Tcp)
这将创建一个使用TCP(这是一个流协议)的套接字。如果你想在一个面向连接的套接字上调用Socket.SendTo
,你必须首先通过调用Socket.Connect
来连接它。
如果你只打算发送数据报,使用UDP是一个更好的选择,它根本不需要连接。
var client = new Socket(AddressFamily. net)互联网络,SocketType。Dgram ProtocolType.Udp)
private void button1_Click(object sender, EventArgs e)
{
byte[] packetData = Encoding.ASCII.GetBytes(textBox1.Text);
const string ip = "75.126.77.26";
const int port = 5588;
var ep = new IPEndPoint(IPAddress.Parse(ip), port);
var client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Connect(ep);
client.SendTo(packetData, ep);
}
为清楚起见,加了这行:
client.Connect(ep);
我认为您正在寻找的是在呼叫client.SendTo
之前呼叫client.Connect
。您还需要在调用connect后调用client.Connected
以确保您已连接。
这个帮助页有一个使用套接字对象的示例:http://msdn.microsoft.com/en-us/library/2b86d684%28v=vs.110%29.aspx.
// Connect to the host using its IPEndPoint.
s.Connect(hostEndPoint);
if (!s.Connected)
{
// Connection failed, try next IPaddress.
strRetPage = "Unable to connect to host";
s = null;
continue;
}