永发信息网

socket 网络编程 C#

答案:1  悬赏:40  手机版
解决时间 2021-05-17 18:25
  • 提问者网友:记得曾经
  • 2021-05-17 06:34

private Socket s;                    //定义Socket对象         

public NetworkStream ns;                //网络流

public StreamReader sr;                 //流读取

public StreamWriter sw;


private void button1_Click(object sender, EventArgs e)
{
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress serverIP = IPAddress.Parse("119.161.164.164");  //服务器IP
try
{
s.Connect(serverIP, 4807);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
try
{
ns = new NetworkStream(s);           //实例化网络流

sr = new StreamReader(ns);           //实例化流读取对象

sw = new StreamWriter(ns);           //实例化写入流对象

//发送字符串
string str = "ENQUIRY"+"\t"+"B10101"+"\t"+"01"+"\t" + "GPCardBalance" + "\t\r\n" ;
str += "0000000000000005" + "\t\r\n";

sw.WriteLine(str);          //将str的数据写入流

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

label1.Text = sr.ReadLine();   //将从流中读取的数据写入lbInfo

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);          //捕获异常
}
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
s.Shutdown(SocketShutdown.Both);

s.Close();

}

这个是socket客户端的代码,为什么我收不到服务器返回的信息,而且程序也没捕获异常,就是死在那,好像死循环一样。

最佳答案
  • 五星知识达人网友:杯酒困英雄
  • 2021-05-17 06:54

你的客户端程序里根本就没有receive,当然接不到服务器的返回信息了。


public void recv_fun()
{
while (true)
{
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = s.Receive(recvBytes, recvBytes.Length, 0);
recvStr = Encoding.ASCII.GetString(recvBytes, 0, bytes).ToString();
}
}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯