我在ASP.NET中用C#建立了一个SOCKET连接,抓包发现,与服务器建立连接,发送数据,服务器返回数据都是成功的,但我的问题是,在ASP.NET程序中接收不到服务器返回的数据,请哪位高手帮我看看是不是代码哪里写错了!
public partial class _Default : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
//组合出远程终结点 (一个套接字)
IPEndPoint hostEP = new IPEndPoint(System.Net.IPAddress.Parse("114.79.121.14"), 5000);
System.Web.HttpContext.Current.Response.Write(hostEP);
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
socket.Connect(hostEP);
}
string sendStr1 = "0020000100063"
byte[] bytesSendStr1=new byte[1024];
bytesSendStr1=Encoding.ASCII.GetBytes(sendStr1);
System.Web.HttpContext.Current.Response.Write(sendStr1);
try
{
socket.Send(bytesSendStr1, bytesSendStr1.Length, 0);
}
catch (Exception xe)
{
System.Web.HttpContext.Current.Response.Write(xe.Message);}
string recvStr="";
byte[] recvBytes=new byte[1024];
int bytes=0;
while(true)
{ bytes = socket.Receive(recvBytes);
if(bytes<=0)
break;
recvStr =Encoding.ASCII.GetString(recvBytes,0,bytes);
System.Web.HttpContext.Current.Response.Write(recvStr);
}
}
}
public partial class _Default : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
//组合出远程终结点 (一个套接字)
IPEndPoint hostEP = new IPEndPoint(System.Net.IPAddress.Parse("114.79.121.14"), 5000);
System.Web.HttpContext.Current.Response.Write(hostEP);
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
socket.Connect(hostEP);
}
string sendStr1 = "0020000100063"
byte[] bytesSendStr1=new byte[1024];
bytesSendStr1=Encoding.ASCII.GetBytes(sendStr1);
System.Web.HttpContext.Current.Response.Write(sendStr1);
try
{
socket.Send(bytesSendStr1, bytesSendStr1.Length, 0);
}
catch (Exception xe)
{
System.Web.HttpContext.Current.Response.Write(xe.Message);}
string recvStr="";
byte[] recvBytes=new byte[1024];
int bytes=0;
while(true)
{ bytes = socket.Receive(recvBytes);
if(bytes<=0)
break;
recvStr =Encoding.ASCII.GetString(recvBytes,0,bytes);
System.Web.HttpContext.Current.Response.Write(recvStr);
}
}
}
解决方案 »
- outlook!我快让它逼疯了。。。。
- ActiveX控件显示不出来
- 急!!!~~~~~~~gridview 中checkbox保存問題
- httpHandlers 的映射问题
- |M| 错误处理再问一下跳转问题 和LogEvent用法
- 朋友门我有个网站是b2b的 你们说说是用dataread好还是dataset?
- ==============一个我认为难度很大的sql语句=====================
- 在客户屏蔽了cookies后,保存客户端最好的办法是什么?
- 想学习ASP。net,求一个源码,谢谢大家
- 前天去面试遇到这么一道sql的题目,高手请进,帮忙回答下啊~!
- 关于更新用户登陆状态的功能实现
- 怎么用ASP。NET制作留言板
{
Thread.Sleep(100);
accSock = sock.Accept();
if (accSock.Connected)
{
Byte[] Rec = new Byte[1024 * 100];
NetworkStream netStream = new NetworkStream(accSock);
int length = netStream.Read(Rec, 0, Rec.Length);
if (length >= 1024 * 100)
{
Console.WriteLine("一次消息太长");
return;
}
string recMessage = System.Text.Encoding.BigEndianUnicode.GetString(Rec);
recMessage = recMessage.Substring(0, length);
recMessage = recMessage.Replace("\0", "");
}
}
{
socket.Connect(hostEP);
}
catch(Exception e)
{
Log error
}
finnaly
{
socket.Close();
....
release socket resource...
}
你如何保证第一次Receive就不能是返回0?
TCP的Receive不见得每次都能接到数据!
如果你在Receive前每次Sleep(100)的话,估计情况就不一样了!
另外,你也没有进行连接检测,万一连接失败怎么办?最好多捕捉一下异常情况。