我试图设置一个连续读取通过端口来的字符串的服务器。 我已经找到了一段代码,但它只会读取一个字符串,然后停止。 我该如何修改它,以便连续读取到达该端口的字符串并将它们放入文本框?C#连续套接字侦听
我试过放一个“while(true)”,但这会挂起我的form.I当前正在研究如何使套接字在backgroundWorker或线程中侦听。
public void start_server()
{
_server_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_server_socket.Bind(new IPEndPoint(IPAddress.Any, 1234));
_server_socket.Listen(0);
_server_socket.BeginAccept(new AsyncCallback(AcceptCallback), null);
}
private void AcceptCallback(IAsyncResult AR)
{
_client_socket = _server_socket.EndAccept(AR);
_buffer = new byte[_client_socket.ReceiveBufferSize];
_client_socket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), null);
}
private void ReceiveCallback(IAsyncResult AR)
{
string text = Encoding.ASCII.GetString(_buffer);
write(text);
}
private void write(string text)
{
MethodInvoker invoker = new MethodInvoker(delegate
{
textBox1.Text =textBox1.Text+text;
});
this.Invoke(invoker);
}
你需要开始在你的'ReceiveCallback'方法再次接收。 –