c# 想实现socket(receive一个标志过后send一个消息再receive结果)

.Net技术 码拜 8年前 (2016-04-29) 2318次浏览
clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAddress = IPAddress.Parse(textBox1.Text);
Int32 port = 12345;//Int32.Parse(12345);
IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);
// 连接到远程服务器
clientSocket.Connect(remoteEP);
if(clientSocket.Connected)
{
string msg = “hello,world”;
byte[] byData = System.Text.Encoding.Default.GetBytes(msg);
if(clientSocket != null)
{
byte[] dat = new byte[1024];
int recv = clientSocket.Receive(dat);
string data = System.Text.Encoding.Default.GetString(dat,0,recv);
label1.Text = data;
  clientSocket.Send(byData);

recv = clientSocket.Receive(dat);
data = System.Text.Encoding.Default.GetString(dat,0,recv);
label1.Text = data;

clientSocket.Close();

}
}

解决方案

10

不行,socket通信模型就是服务端接收客户端消息,然后发送一次消息;而客户端发送一次消息,接收服务端消息。
http://blog.csdn.net/chinacsharper/article/details/9183369

10

你肯定卡住的是send?不是第二个receive?

20

其实设计并没有什么绝对的对错。我们假设用时间来划分,假设你总是能确保完成50分钟内搞明白的事儿,那么你就直接用这个来作为结果。假设你没有那么高的自制力,往往把50分钟的事情搞到了3天才能搞明白,甚至更长时间,那么你就先把前5分钟的目标单独写出来,然后再写出第10分钟的目标,第20分钟的目标……..。
我们搞项目管理也是如此。有些人的工作,本人说一简单任务,他干2天能出成果;而有些人的水平让本人必须每5分钟就去干涉一次,否则他就什么都干不出来、而在那里呆着了。要想让后者具有前者的水平,就是让他本人自觉地把注意力集中在5分钟的目标上、10分钟的目标上……要先学习“过程技术”而不要空谈结果。
你想不到要先证明服务器发送完毕了第二个消息吗?为什么仅仅在此纠结客户端不能第二次receive呢?
其实让你不要看得太远,就是让你把中间调试过程做到位。而不要仅仅幻想结果。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c# 想实现socket(receive一个标志过后send一个消息再receive结果)
喜欢 (0)
[1034331897@qq.com]
分享 (0)