C# 同步Socket 服务器、客户端之间如何实现多次交互?以下是客户端、服务器程序,望改之,可行即给分。。。

也可将以下代码改为异步Socket,只需可实现多次发送与接收即可。服务器界面有一个Textbox和一个Button,客户端也一样。服务器按下Button即持续监听,收到的... 也可将以下代码改为异步Socket,只需可实现多次发送与接收即可。
服务器界面有一个Textbox和一个Button,客户端也一样。
服务器按下Button即持续监听,收到的内容存放至Textbox中;客户端按下Button则将textbox中的内容发送出去。
要求:服务器只需按下一次button即可持续监听。

以下代码可实现每按一次监听和发生才接收一次,而不能持续监听。
服务器:
int client_receive_port = 12346;
IPAddress client_receive_ip = IPAddress.Parse(GetLocalIp());//将 IP 地址字符串转换为 IPAddress 实例,通过GetLocalIp方法即可获得IP地址
IPEndPoint client_server_ipe = new IPEndPoint(client_receive_ip, client_receive_port);
Socket client_receive = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client_receive.Bind(client_server_ipe);//绑定
client_receive.Listen(50);//参数指定队列中最多可容纳的等待接受的传入连接
Socket temp2 = client_receive.Accept();
string client_recvStr = "";
byte[] client_recvBytes = new byte[1024*8];
int bytes;
bytes = temp2.Receive(client_recvBytes);//接收数据,并将数据存入接收缓冲区。
client_recvStr += Encoding.UTF8.GetString(client_recvBytes);
MessageBox.Show(client_recvStr);
客户端:
int server_send_port = 12346;//
IPAddress server_send_ip = IPAddress.Parse(GetLocalIp());
IPEndPoint server_send_ipe = new IPEndPoint(server_send_ip, server_send_port);
Socket server_send = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server_send.Connect(server_send_ipe);
string server_sendStr = "";
server_sendStr = textBox2.Text;
byte[] server_sendbytes = Encoding.UTF8.GetBytes(server_sendStr);
server_send.Send(server_sendbytes);
展开
 我来答
aaasuper
2012-07-13 · TA获得超过801个赞
知道小有建树答主
回答量:431
采纳率:100%
帮助的人:625万
展开全部
服务器端等待到了连接以后就直接往下执行了,没有等待客户端连接了。可以在
Socket temp = server_socket.Accept();
以后,创建一个线程,将temp传过去进行具体的通信,在本线程继续server_socket.Accept();
while(true)
{
Socket temp = server_socket.Accept();

Thread th = new Thread(AcceptThread);
th.Start(new object[] { temp });
}
为了防止主线程被阻塞而无法响应界面操作,应该在创建一个线程来执行以上代码
追问
20分啊,不够详细。求可行代码。

参考资料: http://zhidao.baidu.com/question/448492358.html?oldq=1

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iloveameizi
2012-07-21
知道答主
回答量:5
采纳率:0%
帮助的人:5.6万
展开全部
使用while(true)
{
}连续监听,并使用多线程技术。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沉香ai小玉
2012-07-16 · 超过19用户采纳过TA的回答
知道答主
回答量:116
采纳率:0%
帮助的人:45.1万
展开全部
代码怎么可能直接写呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式