所以我试图发送一个数据包,但我一直收到这个错误
任何帮助都会很棒!
非常感谢!
错误讯息: 不允许发送或接收数据的请求,因为套接字未连接(当使用sendto调用在数据报套接字上发送时)没有提供地址
代码:
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.SendTo(packetData, ep);
}
}
}
答案 0 :(得分:2)
var client = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp)
这将创建一个将使用TCP的套接字(这是一个流协议)。如果要在面向连接的套接字上调用Socket.SendTo
,则必须先通过调用Socket.Connect
来连接它。
如果您打算仅发送数据报,则最好选择使用UDP,而不需要连接。
var client = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp)
答案 1 :(得分:1)
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);
答案 2 :(得分:-2)
我认为您要求的是在致电client.Connect
之前致电client.SendTo
。您还需要在致电连接后致电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;
}