c#socket问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 03:07:46
问题在于:只能成功发送第一次

服务器端:
private void button1_Click(object sender, EventArgs e)
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ip = IPAddress.Parse("127.0.0.1");
IPEndPoint point = new IPEndPoint(ip, 13000);
Socket ss;

string str = "";
byte[] byt = new byte[1024];
int i;

s.Bind(point);
s.Listen(5);

ss = s.Accept();
i = ss.Receive(byt, byt.Length, 0);
str = Encoding.UTF8.GetString(byt, 0, i);
textBox1.Text = str;

//ss.Close();
//s.Close();

}

客户端:

Socket s = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
static IPAddress ip = IP

因为服务器你只ss = s.Accept()了一次

Accept()只阻止模式的,当程序运行到Accpet()的时候就会停下来,然后等客户端连接,连接完了就会做下面的动作:
i = ss.Receive(byt, byt.Length, 0);
str = Encoding.UTF8.GetString(byt, 0, i);
textBox1.Text = str;
之后程序就退出了,再也没有进入Accpet()了。

一般的做法这样的
1.开启一个新的线程不停地侦听,侦听到了Socket就加入一个Socket列表里面,对这个列表进行维护和操作
2.采用异步Socket。

发送第2次的时候会异常么???
还是怎样??你的按钮点一次才会发一次的吧?

服务器端 是哟很难过 TcpListener 直接监听