服务端:
Socket handler = listener.Accept();
string data = null;
while (true)
{
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
data += Encoding.UTF8.GetString(bytes,0,bytesRec);
if (data.Length>0)
{
break;
}客户端:
ipHostInfo = Dns.Resolve(this.serverIP);
ipAddress = ipHostInfo.AddressList[0];
remoteEP = new IPEndPoint(ipAddress,this.port);
sender = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp );public string ReceiveSendMessage(string sendmessage)
{
byte[] bytes = new byte[5000];
byte[] msg = Encoding.UTF8.GetBytes(sendmessage);
int bytesSent = sender.Send(msg);
int bytesRec = sender.Receive(bytes);
string receive=Encoding.UTF8.GetString(bytes,0,bytesRec);
return receive;
}
主要就是这些代码.我在调用ReceiveSendMessage方法的时候调用1次没问题,第2次再调用就提示错误:
您的主机中的软件放弃了一个已建立的连接.怎么解决法?高手出来帮帮我,郁闷一天了.
Socket handler = listener.Accept();
string data = null;
while (true)
{
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
data += Encoding.UTF8.GetString(bytes,0,bytesRec);
if (data.Length>0)
{
break;
}客户端:
ipHostInfo = Dns.Resolve(this.serverIP);
ipAddress = ipHostInfo.AddressList[0];
remoteEP = new IPEndPoint(ipAddress,this.port);
sender = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp );public string ReceiveSendMessage(string sendmessage)
{
byte[] bytes = new byte[5000];
byte[] msg = Encoding.UTF8.GetBytes(sendmessage);
int bytesSent = sender.Send(msg);
int bytesRec = sender.Receive(bytes);
string receive=Encoding.UTF8.GetString(bytes,0,bytesRec);
return receive;
}
主要就是这些代码.我在调用ReceiveSendMessage方法的时候调用1次没问题,第2次再调用就提示错误:
您的主机中的软件放弃了一个已建立的连接.怎么解决法?高手出来帮帮我,郁闷一天了.
解决方案 »
- C# 控制台 Remoting
- PictureBox事件:鼠标在picturebox上,则变为另外一张图片
- 调用存储过程 返回值的问题
- C#多线程中效率低下的问题。
- C#做的WIN应用程序,怎样实现单击出系统对话框?
- 〓〓〓如何把htmltable的背景图去掉?
- 求一个C#+SQL2005管理系统
- datagrid更新时出现“属性尚未初始化”错误,附代码!
- vs2010打包应用程序时如何包含virtual c++ 2005
- 如何作一个象金山毒霸一样的目录选项tree,前面一个checkbox,选择父目录,子目录会自动选中?
- 怎么用socket发送指定的stream里的东西???
- combo的style为 DropDownList后,为何设置当前显示的文本(用combo1.text="hi")
{
break;
}
{
break;
}
///edit
if (data.Length<0)
{
break;
}
{
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
data += Encoding.UTF8.GetString(bytes,0,bytesRec);
if (data.Length>0)
{
break;//收到信息后break了,还玩什么:-)
}
{
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
data += Encoding.UTF8.GetString(bytes,0,bytesRec);
if (data.Length>0)
{
break;//收到信息后break了,还玩什么:-)
}
while(true)本来是个无限循环,你在第一次收到信息后就跳出来了,所以说不能收第二次了
我用Thread.Sleep(100)方法
第1个没问题了,第2个还出不来
{
Socket handler = listener.Accept();
string data = null;
while (true)
{
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
data += Encoding.UTF8.GetString(bytes,0,bytesRec);
if (data.Length>0)
{
//break;
//开始处理返回信息
string[] mA=data.Split("|||".ToCharArray());
//开始分别处理各项请求
switch (mA[0])
{
case "SendToServerLoadUserList":
mA[3]=mA[3].Replace("\0","").Trim();
string userlist=Service.SendUserList(mA[3]);
byte[] msg = Encoding.UTF8.GetBytes(userlist);
handler.Send(msg);
this.label1.Text="成功发送到客户端!";
break;
case "SendToServerLoadUserFace":
mA[3]=mA[3].Replace("\0","").Trim();
string userface=Service.SendFace(mA[3]);
byte[] msg3=System.Text.Encoding.UTF8.GetBytes(userface);
handler.Send(msg3);
this.label1.Text="已发送给"+mA[3]+"头像信息";
break;
}
Thread.Sleep(10);
请大家看下,我按照上面的已经改了,第1次发送接受数据没问题,第2次提示错误:未将对象引用到实例化.第2次我断点测试,发现没有运行case 里面就提示错误了,高手帮我再解决下谢谢
http://community.csdn.net/Expert/topic/4717/4717902.xml?temp=.9584772