服务端:
private void Form1_Load(object sender, EventArgs e)
{
thread = new Thread(new ThreadStart(get));
thread.Start();
}
private void get()
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(getip()), 10);
socket.Bind(ipe);
isStart = true;
byte[] buff = new byte[1024];
while (isStart)
{
socket.Listen(10);
Socket conSocket = socket.Accept();
conSocket.Receive(buff);
string s = Encoding.Default.GetString(buff);
updateui(s); //在textbox显示
Thread.Sleep(200);
}
}
客户端:
private void button1_Click(object sender, EventArgs e)
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipe=new IPEndPoint(IPAddress.Parse("192.168.0.3"),10);
socket.Connect(ipe);
if (socket.Connected)
{
MessageBox.Show("链接上了!");
}
else
{
MessageBox.Show("没有链接!");
}
}
private void button2_Click(object sender, EventArgs e)
{
string s = this.richTextBox1.Text.Trim();
byte[] buff = Encoding.Default.GetBytes(s);
socket.Send(buff);
}
第一次点击发送后,正常,可以显示信息,
但第二次后就不能正常显示了,
我在updateui那设断点,
发现第二次点击后都不能执行到那,这是为什么啊?
怎么解决啊?大侠们帮忙啊!急!
分不够可以加!
private void Form1_Load(object sender, EventArgs e)
{
thread = new Thread(new ThreadStart(get));
thread.Start();
}
private void get()
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(getip()), 10);
socket.Bind(ipe);
isStart = true;
byte[] buff = new byte[1024];
while (isStart)
{
socket.Listen(10);
Socket conSocket = socket.Accept();
conSocket.Receive(buff);
string s = Encoding.Default.GetString(buff);
updateui(s); //在textbox显示
Thread.Sleep(200);
}
}
客户端:
private void button1_Click(object sender, EventArgs e)
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipe=new IPEndPoint(IPAddress.Parse("192.168.0.3"),10);
socket.Connect(ipe);
if (socket.Connected)
{
MessageBox.Show("链接上了!");
}
else
{
MessageBox.Show("没有链接!");
}
}
private void button2_Click(object sender, EventArgs e)
{
string s = this.richTextBox1.Text.Trim();
byte[] buff = Encoding.Default.GetBytes(s);
socket.Send(buff);
}
第一次点击发送后,正常,可以显示信息,
但第二次后就不能正常显示了,
我在updateui那设断点,
发现第二次点击后都不能执行到那,这是为什么啊?
怎么解决啊?大侠们帮忙啊!急!
分不够可以加!
解决方案 »
- System.InvalidOperationException: 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。
- 高手请帮我看看这个存储过程怎么调用?
- C#正则表达式的用法,举下源码,再说明一下,谢谢。
- byte类型数组,转换为string!!!怎么弄?
- 请问:i=Int32.Parse 是什么意思呀
- 来来来,初学者问个小问题,一个小时就结了
- 怎么回事?重装vs2003之后,无法打开原来的.sln文件.
- “System.Windows.Forms.Control.ControlCollection”并不包含对“Item”的定义 这个可能吗?
- GetHashCode();
- Graphics
- ListView中要显示两列checkbox怎么处理?
- 关于Socket的问题
{
socket.Listen(10);
Socket conSocket = socket.Accept();
conSocket.Receive(buff);
string s = Encoding.Default.GetString(buff);
updateui(s); //在textbox显示
Thread.Sleep(200);
} 我记得服务端的这块应该调整一下socket.Listen(10);
Socket conSocket = socket.Accept(); 似乎应该放到循环外边,否则第一次接受后的状态是等待连接,而不是等待接收
while (isStart)
{
Socket conSocket = socket.Accept();
conSocket.Receive(buff);
string s = Encoding.Default.GetString(buff);
updateui(s); //在textbox显示
Thread.Sleep(200);
}
可能有问题
你是不是在vs2005里面通过inoke来更新textbox的?
private void get()
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(getip()), 10);
socket.Bind(ipe);
isStart = true;
socket.Listen(10);
while (isStart)
{
Socket conSocket = socket.Accept();
byte[] buff = new byte[1024];
conSocket.Receive(buff);
string s = Encoding.Default.GetString(buff);
updateui(s);
}
}
服务端的连接为最新的客户端连接,而且每次接收数据都要等待连接重开一个线程 用来接收数据
accept上了。你现在有每有解决啊,解决了告诉我声啊