关于asp.net的socket的通信问题求问!!!!!!!!!!有代码,帮忙看一下

maqingli 2008-01-08 01:01:10
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;


public partial class _Default : System.Web.UI.Page
{
private Socket socket;
private Thread thread;
//private NetworkStream netStream;


protected void Page_Load(object sender, EventArgs e)
{
//this.TextBoxReceive.Text = "";
//this.TextBoxSend.Text = "";
//this.listBoxState.Items.Clear();
}



protected void buttonRequest_Click(object sender, EventArgs e)
{
//string ip = this.textBoxIP.Text;
//int port = Convert.ToInt32(this.textBoxPort.Text);
//int port = Int32.Parse(textBoxPort);
IPAddress ip = IPAddress.Parse(this.textBoxIP.Text);
IPEndPoint server = new IPEndPoint(ip,Int32.Parse(this.textBoxPort.Text));
socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
try
{
socket.Connect(server);
}
catch(Exception ee)
{
// Console.Write("与服务器连接失败!");
this.listBoxState.Items.Add(ee.Message);
return;
}
this.buttonRequest.Enabled = false;
this.listBoxState.Items.Add("与服务器连接成功");
thread = new Thread(new ThreadStart(AcceptMessage));
thread.Start();

}
private void AcceptMessage()
{
NetworkStream netStream = new NetworkStream(socket);
while (true)
{
try
{
byte[] datasize = new byte[4];
netStream.Read(datasize, 0, 4);
int size = System.BitConverter.ToInt32(datasize, 0);
Byte[] message = new byte[size];
int dataleft = size;
int start = 0;
while (dataleft > 0)
{
int recv = netStream.Read(message, start, dataleft);
start += recv;
dataleft -= recv;
}
this.TextBoxReceive.Text = System.Text.Encoding.Unicode.GetString(message);

}
catch
{
this.listBoxState.Items.Add("服务器断开连接");
break;

}

}

}
protected void buttonClose_Click(object sender, EventArgs e)
{
try
{
if (socket.Connected)
{
socket.Shutdown(SocketShutdown.Both);
socket.Close();
thread.Abort();
}
this.listBoxState.Items.Add("与主机断开连接");
}
catch (Exception err)
{
this.listBoxState.Items.Add(err.Message);
}
this.buttonRequest.Enabled = true;


}
protected void buttonSend_Click(object sender, EventArgs e)
{
string str = this.TextBoxSend.Text;
//string str = TextBoxSend.Text;
int i = str.Length;
if (i == 0)
{
return;
}
else
{
i *= 2;
}
byte[] datasize = new byte[4];
datasize = System.BitConverter.GetBytes(i);
byte[] sendbytes = System.Text.Encoding.Unicode.GetBytes(str);
//byte[] sendbytes = System.Text.Encoding.Default.GetBytes(str);
//Byte[] sendbytes = new Byte[64];
//sendbytes = System.Text.Encoding.Unicode.GetBytes(str.ToCharArray());
//Byte[] sendbytes = System.Text.Encoding.Unicode.GetBytes(str.ToCharArray());
NetworkStream netStream = new NetworkStream(socket);

try
{
//NetworkStream netStream = new NetworkStream(socket);
netStream.Write(datasize, 0, 4);
netStream.Write(sendbytes, 0, sendbytes.Length);
netStream.Flush();
this.TextBoxSend.Text = "";
//socket.Send(sendbytes,sendbytes.Length,SocketFlags.None);
}



/* try

{
//TcpClient client=new TcpClient();
//NetworkStream netStream=client.GetStream();
//string send=this.TextBoxSend.Text;
//byte[] message=System.Text.Encoding.BigEndianUnicode.GetBytes(send.ToCharArray());
//netStream.Write(message,0,message.Length);
//netStream.Flush();



//socket.Send(sendbytes,sendbytes.Length,0);
}*/


catch(Exception ee)
{
this.listBoxState.Items.Add(ee.Message);
}


}
}


这是一个asp.net开发的和第三方socket通信的客户端原代码,
在有颜色字体处总报错,服错如下:


值不能为空。
参数名: socket
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.ArgumentNullException: 值不能为空。
参数名: socket


源错误:


行 130: //sendbytes = System.Text.Encoding.Unicode.GetBytes(str.ToCharArray());
行 131: //Byte[] sendbytes = System.Text.Encoding.Unicode.GetBytes(str.ToCharArray());
行 132: NetworkStream netStream = new NetworkStream(socket);
行 133:
行 134: try



...全文
157 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yan19861206 2010-10-19
  • 打赏
  • 举报
回复
加个判断,设下断点 ,看看报错原因
levenwood 2008-01-10
  • 打赏
  • 举报
回复
断点看看socket 为什么为空
maqingli 2008-01-10
  • 打赏
  • 举报
回复
为何没人回答呢,各位大虾

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧