C#中SOCKET编程AcceptSocket到这里就卡住了

try
{
Int32 port = 1111;
IPAddress localAddr = IPAddress.Parse("192.168.0.103");

tcpl = new TcpListener(localAddr,port);
tcpl.Start();
lblStatus.Text = "正在监听!";
while (true)
{
Socket QS=tcpl.AcceptSocket();
Byte[] Stream = new Byte[1024];
QS.Receive(Stream);
string message = System.Text.Encoding.UTF8.GetString(Stream);
richTextBox1.AppendText(message);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

以上是我的代码
为什么一到AcceptSocket就卡住了呢?
private void Send()
{
try
{
string msg = "<" + textBox4.Text + ">" + textBox3.Text;

TcpClient tcpc = new TcpClient(txtIP.Text, 2222);//客户端以这个IP地址和端口发送数据过去
NetworkStream tcpStream = tcpc.GetStream();

StreamWriter reqStreamW = new StreamWriter(tcpStream);

reqStreamW.Write(msg);

reqStreamW.Flush();//清理缓冲区

tcpStream.Close();//关闭

tcpc.Close();//客户端连接关闭

richTextBox1.AppendText(msg);

textBox2.Clear();
}
catch (Exception)
{
lblStatus.Text = "目标计算机拒绝连接请求!";
}
}

这里有办法把字符串msg的内容传递到另外一个机子上的文本框里面吗?
我这里是两个方法,,,都分别写在不同的程序里面的!
我的QQ11018230 感激不尽
最新回答
给十年后的我

2024-11-07 00:48:23

没有请求到达,当然要“卡”住,要不后面的代码跟谁通信?

后面的代码就是跟“请求者”通信,既然没有请求者,当然会在AcceptSocket这里“卡”住,术语叫程序阻塞,

socket同步通讯就是这个步骤,执行到AcceptSocket就会阻塞等待请求,直到有请求到达时,才执行后面的语句,并且处理这个请求,
蓝萱薇

2024-11-07 11:58:09

AcceptSocket是同步的,你可以用异步通讯的BeginAcceptSocket或者用多线程。
你是我所有的梦

2024-11-07 10:28:28

我有socket完整代码例子

http://heisetoufa.javaeye.com/blog/257070