当前位置:编程学习 > C#/ASP.NET >>

socket 网络编程 C#

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客户端的代码,为什么我收不到服务器返回的信息,而且程序也没捕获异常,就是死在那,好像死循环一样。

追问:我像你一样设置了,还是不行,我问下c# 中socket中的handler能不能指定的?
答案:你的客户端程序里根本就没有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();
}
}

上一个:C#面向对象编程
下一个:软件编程C#求解!

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,