socket服务端,BeginReceive产生未知异常 [问题点数:50分,结帖人u010488383]

Bbs1
本版专家分:46
结帖率 90.91%
Bbs1
本版专家分:46
Bbs2
本版专家分:111
Bbs2
本版专家分:111
Bbs12
本版专家分:468717
Blank
进士 2018年总版新获得的技术专家分排名前十
2017年 总版技术专家分年内排行榜第十
2013年 总版技术专家分年内排行榜第八
Blank
铜牌 2018年12月 总版技术专家分月排行榜第三
2018年11月 总版技术专家分月排行榜第三
2017年2月 总版技术专家分月排行榜第三
Blank
红花 2019年1月 .NET技术大版内专家分月排行榜第一
2018年12月 .NET技术大版内专家分月排行榜第一
2018年11月 .NET技术大版内专家分月排行榜第一
2018年10月 .NET技术大版内专家分月排行榜第一
2018年9月 .NET技术大版内专家分月排行榜第一
2018年7月 .NET技术大版内专家分月排行榜第一
2018年6月 .NET技术大版内专家分月排行榜第一
2018年1月 .NET技术大版内专家分月排行榜第一
2017年5月 .NET技术大版内专家分月排行榜第一
2017年4月 .NET技术大版内专家分月排行榜第一
2017年3月 .NET技术大版内专家分月排行榜第一
2017年2月 .NET技术大版内专家分月排行榜第一
2016年10月 .NET技术大版内专家分月排行榜第一
2016年8月 .NET技术大版内专家分月排行榜第一
2016年7月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2019年4月 .NET技术大版内专家分月排行榜第二
2019年3月 .NET技术大版内专家分月排行榜第二
2018年8月 .NET技术大版内专家分月排行榜第二
2018年4月 .NET技术大版内专家分月排行榜第二
2018年3月 .NET技术大版内专家分月排行榜第二
2017年12月 .NET技术大版内专家分月排行榜第二
2017年9月 .NET技术大版内专家分月排行榜第二
2017年7月 .NET技术大版内专家分月排行榜第二
2017年6月 .NET技术大版内专家分月排行榜第二
2016年12月 .NET技术大版内专家分月排行榜第二
2016年9月 .NET技术大版内专家分月排行榜第二
2016年6月 .NET技术大版内专家分月排行榜第二
2016年3月 .NET技术大版内专家分月排行榜第二
2016年1月 .NET技术大版内专家分月排行榜第二
2015年12月 .NET技术大版内专家分月排行榜第二
2015年2月 .NET技术大版内专家分月排行榜第二
2015年1月 .NET技术大版内专家分月排行榜第二
2014年11月 .NET技术大版内专家分月排行榜第二
2014年5月 .NET技术大版内专家分月排行榜第二
2014年4月 .NET技术大版内专家分月排行榜第二
2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
Bbs12
本版专家分:468717
Blank
进士 2018年总版新获得的技术专家分排名前十
2017年 总版技术专家分年内排行榜第十
2013年 总版技术专家分年内排行榜第八
Blank
铜牌 2018年12月 总版技术专家分月排行榜第三
2018年11月 总版技术专家分月排行榜第三
2017年2月 总版技术专家分月排行榜第三
Blank
红花 2019年1月 .NET技术大版内专家分月排行榜第一
2018年12月 .NET技术大版内专家分月排行榜第一
2018年11月 .NET技术大版内专家分月排行榜第一
2018年10月 .NET技术大版内专家分月排行榜第一
2018年9月 .NET技术大版内专家分月排行榜第一
2018年7月 .NET技术大版内专家分月排行榜第一
2018年6月 .NET技术大版内专家分月排行榜第一
2018年1月 .NET技术大版内专家分月排行榜第一
2017年5月 .NET技术大版内专家分月排行榜第一
2017年4月 .NET技术大版内专家分月排行榜第一
2017年3月 .NET技术大版内专家分月排行榜第一
2017年2月 .NET技术大版内专家分月排行榜第一
2016年10月 .NET技术大版内专家分月排行榜第一
2016年8月 .NET技术大版内专家分月排行榜第一
2016年7月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2019年4月 .NET技术大版内专家分月排行榜第二
2019年3月 .NET技术大版内专家分月排行榜第二
2018年8月 .NET技术大版内专家分月排行榜第二
2018年4月 .NET技术大版内专家分月排行榜第二
2018年3月 .NET技术大版内专家分月排行榜第二
2017年12月 .NET技术大版内专家分月排行榜第二
2017年9月 .NET技术大版内专家分月排行榜第二
2017年7月 .NET技术大版内专家分月排行榜第二
2017年6月 .NET技术大版内专家分月排行榜第二
2016年12月 .NET技术大版内专家分月排行榜第二
2016年9月 .NET技术大版内专家分月排行榜第二
2016年6月 .NET技术大版内专家分月排行榜第二
2016年3月 .NET技术大版内专家分月排行榜第二
2016年1月 .NET技术大版内专家分月排行榜第二
2015年12月 .NET技术大版内专家分月排行榜第二
2015年2月 .NET技术大版内专家分月排行榜第二
2015年1月 .NET技术大版内专家分月排行榜第二
2014年11月 .NET技术大版内专家分月排行榜第二
2014年5月 .NET技术大版内专家分月排行榜第二
2014年4月 .NET技术大版内专家分月排行榜第二
2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
Bbs1
本版专家分:46
异步TCP调用BeginReceive和EndAccept有时候会产生异常
首先说一下我的代码的大概结构rn1.程序是CS架构的。客户端负责把有硬件采集到的数据发到服务器,当服务器接收到某个客户端发来的数据(结构体来的),把接收到的数据推进一个队列,有专门的线程循环检测队列中是否有数据,有数据就取数据更新图形界面,并且再分发到其他客户端,客户端接收到来自服务器发来的数据会更新本客户端的图形界面,从而能看到别的客户端的实时情况。目前有16个客户端同时接入服务器。rn2.服务器和客户端都是用.Net2.0和C#开发,通信部分都采用异步Socket,代码的结构大致相同,下面会给出代码。rn3.服务器端代码主要的函数有:rn(1)initListener(),初始化listen的Socket,并启动异步接收客户端连接(这里没有采用while循环来Accept,而是在BeginAccept的回调函数中再次调用BeginAccept)。rn(2)OnConnectReuqest(),作为BeginAccept的回调函数,当异步接收到一个客户端连接时调用该函数,在该函数中再次调用lietener.BeginAccept(),继续接受下一个连接rn(3)OnReceiveData()函数接收来自客户端的操作并且执行一系列的操作rn4.一些自定义类型的解释rnTrackStateStr是我自定义的结构体类型rnSocketChatClient类封装了一个Socket和接收缓冲区,当接受了一个客户端的连接时候,把与客户端通信的Socket封装到该类中,该类提供了SetupReceiveCallback方法调用BeginReceive异步接收数据(回调函数就是OnReceiveData)rnrn出现的问题:rn1.程序运行久了(大概一天不到),会在OnConnectRequest()函数的SockChatClient client = new SockChatClient(listener.EndAccept(ar), this)这一句出现<em>异常</em>,提示只能对一个异步操作调用一次EndAccept,不知道是由什么引起的。rn2.运行了一段时间(也是大概一天不到)在SockChatClient类的SetupReceiveCallback()会出现<em>异常</em>,应该是调用BeginReceive失败了,提示要 访问的资源已经释放,应该是在调用的时候Socket已经被释放了。不知道是不是由于客户端的关闭引起的。但是我在OnReceiveData函数里面有捕获客户端关闭的<em>异常</em>。rn3.出现了一个<em>异常</em>提示:集合已修改;可能无法执行枚举操作。应该是在SetTrackStateCall()这个函数中出现的<em>异常</em>,不知道是因为什么。SetTrackStateCall()是循环检测接收队列里面是否有数据并进行相应处理的函数。rnrn主要就是以上3个问题,请各位对Socket方面有丰富经验的大大门帮我看看问题是在哪,关键代码我都贴在下面。rnrn<em>服务端</em>异步TCP的主要代码:rn[code=C#]Socket listener;rn int listenPort;rn public bool isRun;rn Type trackStateType = (new TrackStateStr()).GetType();rn public ArrayList m_clientSockList = new ArrayList();rn Dictionary m_IPIndex;rn object curAllTrackStateLocker = new object();rn public Queue recvTrackStateQueue = new Queue(100);rn public ManualResetEvent manualResetEvent = new ManualResetEvent(true);rn AutoResetEvent writeHandler = new AutoResetEvent(true);rn Thread setTrackTrackThread;rnrn public void initListener()rn rn this.listenPort = (int)Port.ServerListenPort;rn IPEndPoint iep = new IPEndPoint(IPAddress.Parse(MyIP), this.listenPort);rn this.listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);rn this.listener.Bind(iep);rn this.listener.Listen(16);rn this.listener.BeginAccept(new AsyncCallback(OnConnectRequest), this.listener);rn this.isRun = true;rn rnrn private void OnConnectRequest(IAsyncResult ar)rn rn if (!isRun)rn return;rnrn Socket listener = (Socket)ar.AsyncState;rn SockChatClient client = new SockChatClient(listener.EndAccept(ar), this);rn if (this.IsHandleCreated)rn rn int stationIndex = 0;rn foreach (KeyValuePair kvp in IPArray)rn rn if (kvp.Value == ((IPEndPoint)client.Sock.RemoteEndPoint).Address.ToString())rn rn stationIndex = kvp.Key;rn break;rn rn rn if (stationIndex != 0)rn rn Invoke(this.m_AddToMsgTips, new string[] this.stationName[stationIndex] + " 成功连接到服务器" );rn client.StationName = this.stationName[stationIndex];rn client.StationId = stationIndex;rn Invoke(this.m_SetZColor, new object[] _ZArray[stationIndex], _connectedColor );rn m_clientSockList.Add(client);rn client.SetupReceiveCallBack();rn rn elsern rn Invoke(this.m_AddToMsgTips, new string[] "unknown client join!" );rn client.Sock.Close();rn //client.StationName = "unknow client";rn //client.StationId = 0;rn rnrn rn listener.BeginAccept(new AsyncCallback(OnConnectRequest), listener);rn rnrn object queueLocker = new object();rn public void OnReceiveData(IAsyncResult ar)rn rn if (!isRun)rn return;rnrn SockChatClient client = (SockChatClient)ar.AsyncState;rn byte[] recvData = client.GetReceiveData(ar);rn tryrn rnrn if (recvData.Length < 1)rn rn //收到的字节数为0,远程机器可能已经断开连接rn if (this.IsHandleCreated)rn rn this.Invoke(this.m_AddToMsgTips, new string[] "与 " + client.StationName + " 的连接断开" );rn if (client.StationId != 0)rn rn if (this.stationCtrlState[client.StationId] == 2)rn this._twinklingTimerArr[client.StationId].Stop();rn this.Invoke(this.m_SetZColor, new object[] _ZArray[client.StationId], _disconnectedColor );rn rn rn this.stationCtrlState[client.StationId] = 0;rn client.Sock.Close();rn this.m_clientSockList.Remove(client);rn return;rn rnrn TrackStateStr newTrackState = (TrackStateStr)this.BytesToStruct(recvData, this.trackStateType);rn Invoke(m_AddToMsgTips, new string[] "from " + client.StationName );rnrn //writeHandler.WaitOne();rn lock (queueLocker)rn rn recvTrackStateQueue.Enqueue(newTrackState);rn rn //writeHandler.Set();rn rn catch (Exception er)rn rn this.Invoke(this.m_AddToMsgTips, new string[] er.Message );rn rnrn client.SetupReceiveCallBack();rn rnrn int j = 0;rn private void SetTrackStateCall()rn rn while (true)rn rn manualResetEvent.WaitOne();rn //manualResetEvent.Reset();rn lock (queueLocker)rn rn if (recvTrackStateQueue.Count > 0)rn rn tryrn rn TrackStateStr newTrackState = recvTrackStateQueue.Dequeue();rn //更新当前状态rn Invoke(m_UpdateCurTrackState, new object[] newTrackState );rn //回发到各个车站rn SendBackToCli();rn //设置控件状态rn Invoke(m_SetTrackState, new object[] newTrackState );rn for (int i = 0; i < 16; i++)rn rn this._curAllTrackState.Z[i].modified = false;rn rn rn catch (Exception ex)rn rn MessageBox.Show(ex.Message, DateTime.Now + ":From SetTrackStateCall");rn rn rn rn //manualResetEvent.Set();rn Thread.Sleep(10);rn rn rnrn /// rn /// 回发全线状态到所有客户端rn /// rn public void SendBackToCli()rn rn byte[] sendData = StructToBytes(this._curAllTrackState);rn foreach (SockChatClient cli in this.m_clientSockList)rn rn tryrn rn cli.Sock.Send(sendData);rn rn catchrn rn cli.Sock.Close();rn m_clientSockList.Remove(cli);rn //return;rn rn rn rn #endregion[/code]rnrnrnSockChatClient的代码rn[code=C#] class SockChatClientrn rn private Socket m_sock;rn public Socket Sockrn rn get return m_sock; rn rnrn private string m_stationName;rn public string StationNamern rn get return m_stationName; rn set m_stationName = value; rn rnrn private int m_stationId;rn public int StationIdrn rn get return m_stationId; rn set m_stationId = value; rn rnrnrn private byte[] m_buff;rn private int m_bufSize;rnrn ServerForm frmMain;rn AsyncCallback receiveData;rnrn public SockChatClient(Socket sock, ServerForm frmMain)rn rn this.m_sock = sock;rn this.m_bufSize = Marshal.SizeOf((new TrackStateStr()).GetType());rn this.frmMain = frmMain;rn receiveData = new AsyncCallback(this.frmMain.OnReceiveData);rn rnrn public void SetupReceiveCallBack()rn rn tryrn rn m_buff = null;rn m_buff = new byte[m_bufSize];rn //AsyncCallback receiveData = new AsyncCallback(frmMain.OnReceiveData);rn m_sock.BeginReceive(m_buff, 0, m_buff.Length, SocketFlags.None, receiveData, this);rn rn catch (Exception ex)rn rn MessageBox.Show("Setup receive callback fail! " + ex.Message, DateTime.Now + ":From Sock " + this.m_stationId + "," + m_stationName);rn rn rnrn public byte[] GetReceiveData(IAsyncResult ar)rn rn int nRecvBytes = 0;rn tryrn rn nRecvBytes = m_sock.EndReceive(ar);rn rn catchrn rn rnrn byte[] bytesReturn = new byte[nRecvBytes];rn Array.Copy(m_buff, bytesReturn, nRecvBytes);rn return bytesReturn;rn rn [/code]
socket异步传输时BeginReceive()的问题
private void ReceiveCallBack(IAsyncResult iar)rn rn DataObject state = (DataObject)iar.AsyncState;rn int sent = state.WorkSocket.EndReceive(iar);rn if (sent > 0)rn rn state.sb.Append(Encoding.ASCII.GetString(state.buffer));rn state.WorkSocket.BeginReceive(state.buffer, 0, state.buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallBack), state);rn rn elsern rn if (state.sb.Length > 0)rn rn string s = state.sb.ToString();rn rn rn rnrn上面的BeginReceive是用来处理一次没有将数据全部接收完的情况的,本人初学,是照着msdn上写的,但是调试的时候发现这段程序不对,请问一下这段程序到底是如何执行的,好像永远也执行不到else那段语句!
BeginReceive
Socket通讯中 怎样强制关闭BeginReceive()开始的线程?rnrn就是说,如果一个Socket通过BeginReceive开始了接受数据的过程,我怎样强行结束这一过程...rn[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/2.gif][/img]
如何强制结束套接字的BeginReceive?不要关闭套接字的方法。
套接字的BeginReceive函数是阻塞的,希望在需要强制结束它的时候可以在其他地方把它结束掉,但目前知道的方法是关闭套接字,显然这个是不规范的,仅仅是要结束这个接收函数为什么要把套接字关了,但是,
小伙伴们惊呆了,方法BeginReceive很吊诡
在使用方法BeginReceive时,将本应传入AsyncCallback实例的地方,直接用一个方法填进去(这个方法参数类型符合要求),程序运行得很好! 1.正确的方法: public void On
谁能告诉我C#中的Socket的BeginReceive内部是如何异步的?
我看了Socket源代码,但是不是很了解它的原理,它是就调用了WSARecv这个函数然后我不知道它是什么时候进行回调的,它是用WSAEventSelect? public IAsyncResult B
Socket通信BeginReceive异步接收数据何时回调Callback
原文地址:http://www.cnblogs.com/wangtonghui/p/3277303.html 最近在做服务器压力测试程序。 接触了一段时间Socket异步通讯,发现自己对BeginReceive什么时候回调<em>产生</em>了错误的理解。之前我一直以为异步接收数据只有当Buffer被填满的时候才会回调。如果这样当<em>服务端</em>的Buffer大于客户端发送的数据时,客户端发送的数据就不会得到及时的处理...
Win7下Socket服务端通信异常退出
<em>socket</em>通信时,<em>服务端</em>会造成程序死掉,而且是无法捕捉到的<em>异常</em>退出rn经过数天多次测试,XP下正常,绝大部分的WIN7系统会退。rn以下是写的专门用于测试该问题的小程序,一个<em>服务端</em>,一个客户端。rn其中<em>服务端</em>开始后,客户端指定本机的IP地址即可,注意不要使用回环地址,测试时发现回环地址不容易退。rn客户端连接200个<em>socket</em>,每个<em>socket</em>频繁收发数据,很快程序退出rn开发环境:VS2010,C#,Dot Net4.0rn完整程序及代码链接:[url=http://l5.yunpan.cn/lk/QkBwwZxj6wDzT][/url]rn(代码没有处理各种连接及断开的<em>异常</em>情况,不影响测试)rnrn请各位帮忙看看问题所在,是不是WIN7的什么补丁要装一下?测试WIN7机装了SP1,拿360打了所有补丁,一样会退rnrn<em>服务端</em>监听代码:rn[code=csharp]rnpublic class 监听线程rnrn public static int ClientCount = 0;rn private static List list = new List();rn private static string Ip = "";rn private static int Port = 0;rnrn public static void 启动监听线程(string strIp, int port)rn rn Ip = strIp;rn Port = port;rn var th = new Thread(Run);rn th.IsBackground = true;rn th.Start();rn rnrn private static void Run()rn rn var tcpListener = new TcpListener(IPAddress.Parse(Ip), Port);rn tcpListener.Start();rn while (true)rn rn Thread.Sleep(100);rn var tcpClient = tcpListener.AcceptTcpClient();rnrn var obj = new <em>服务端</em>通信线程();rn obj.启动通信线程(tcpClient);rn list.Add(obj);rn ClientCount++;rn rn rnrn[/code]rnrn<em>服务端</em>通信核心代码:rn[code=csharp]rnpublic class <em>服务端</em>通信线程rnrn private TcpClient tcpClient = null;rnrn public void 启动通信线程(TcpClient tcpClient)rn rn this.tcpClient = tcpClient;rn this.tcpClient.ReceiveTimeout = 2000;rn this.tcpClient.SendTimeout = 2000;rnrn var th = new Thread(Run);rn th.IsBackground = true;rn th.Start();rn rnrn private int ReadByte(byte[] buffer, int offset, int size)rn rn tryrn rnrn return tcpClient.GetStream().Read(buffer, offset, size);rn rn catchrn rn tcpClient.Close();rn return 0;rn rn rnrn private bool WriteByte(byte[] buffer, int offset, int size)rn rn tryrn rn tcpClient.GetStream().Write(buffer, offset, size);rn return true;rn rn catchrn rn tcpClient.Close();rn return false;rn rn rn rn private bool 接收定长数据(byte[] buff, int offset, int needLen)rn rn int recvLen = 0;rn while (true)rn rn int len = ReadByte(buff, offset + recvLen, needLen - recvLen);rn if (len < 4; i++) sendBuff[i] = array[i];rn while (tcpClient.Connected)rn rn Thread.Sleep(0);rn if (!接收定长数据(readBuff, 0, 4) || // 接收4个字节报文头rn BitConverter.ToInt32(readBuff, 0) != readLen || // 报文头有误rn !接收定长数据(readBuff, 4, readLen)) // 接收报文内容rn rn tcpClient.Close();rn continue;rn rnrn WriteByte(sendBuff, 0, sendBuff.Length);rn rnrn 监听线程.ClientCount--;rn rnrn[/code]rnrn客户端管理代码rn[code=csharp]rn partial class 客户端通信线程rn rn private static List list = new List();rn private static string Ip = "";rn private static int Port = 0;rn public static void 启动客户端线程(string strIp, int port, int maxCount)rn rn Ip = strIp;rn Port = port;rn for (int i = 0; i < maxCount; i++)rn rn var obj = new 客户端通信线程();rn obj.启动通信线程();rn list.Add(obj);rn rn rnrn public static int 获取正常连接数()rn rn int count = 0;rn foreach (var item in list)rn rn if (item.Active) count++;rn rn return count;rn rn rnrn[/code]rnrn客户端通信代码rn[code=csharp]rn public partial class 客户端通信线程rn rn private TcpClient tcpClient = new TcpClient();rn public bool Active = false;rnrn public void 启动通信线程()rn rn this.tcpClient.ReceiveTimeout = 2000;rn this.tcpClient.SendTimeout = 2000;rnrn var th = new Thread(Run);rn th.IsBackground = true;rn th.Start();rn rnrn private bool Connect()rn rn tryrn rn tcpClient = new TcpClient();rn tcpClient.Connect(Ip, Port);rn return tcpClient.Connected;rn rn catchrn rn return false;rn rn rnrn // 下面的3个方法与<em>服务端</em>完全一致,不重复贴出rn private int ReadByte(byte[] buffer, int offset, int size)rn private bool WriteByte(byte[] buffer, int offset, int size)rn private bool 接收定长数据(byte[] buff, int offset, int needLen)rnrn private void Run()rn rn const int sendLen = 10;rn const int readLen = 100;rn var readBuff = new byte[readLen + 4];rn var sendBuff = new byte[sendLen + 4];rn var array = BitConverter.GetBytes(sendLen);rn for (int i = 0; i < 4; i++) sendBuff[i] = array[i];rn while (true)rn rn Thread.Sleep(50);rnrn this.Active = tcpClient.Connected;//用于界面显示连接数rn if (!tcpClient.Connected && !Connect())rn rn Thread.Sleep(500);rn continue;rn rnrn for (int i = 0; i < 20; i++)rn // 连续通信多次rn if (!tcpClient.Connected) break;rn WriteByte(sendBuff, 0, sendBuff.Length);rnrn if (!接收定长数据(readBuff, 0, 4) || // 接收4个字节报文头rn BitConverter.ToInt32(readBuff, 0) != readLen || // 报文头有误rn !接收定长数据(readBuff, 4, readLen)) // 接收报文内容rn rn tcpClient.Close();rn continue;rn rn rn rn rn rn[/code]
socket 异常断开 服务端是否需要close?
<em>socket</em> <em>异常</em>断开 <em>服务端</em>是否需要close?
写了一个socket服务端,捕获不到的异常
写一个<em>socket</em>,传输数据一切正常.但是当一个客户端关闭窗口时,服务器端就出现了一个如下<em>异常</em>: rnrn//---------------------------------------------------------------------------- rn在 System.Net.Sockets.SocketException 中第一次偶然出现的“System.dll”类型的<em>异常</em>rn在 System.Net.Sockets.SocketException 中第一次偶然出现的“System.dll”类型的<em>异常</em>rn线程 0xb48 已退出,返回值为 0 (0x0)。rn线程 0xad4 已退出,返回值为 0 (0x0)。rn程序“[3504] <em>socket</em>.vshost.exe: 托管”已退出,返回值为 0 (0x0)。rn//---------------------------------------------------------------------------------- rnrn而且其它用户和服务器再通信后也会引发这个<em>异常</em>.请问如何解决.源码较长不好贴上来.rn
socket客户端往服务端发送数据异常
客户端codern[code=java]rnrnpublic class Client implements Runnablern rn private static Socket s;rn rn private Socket getInstance()rn if(s==null)rn try rn return s=new Socket("127.0.0.1",8000);rn catch (UnknownHostException e) rn e.printStackTrace();rn catch (IOException e) rn e.printStackTrace();rn rn rn return s;rn rn rn public void sendMsg() rn while(true)rn try rn run();rn Thread.sleep(3000);rn catch (InterruptedException e) rn // TODO Auto-generated catch blockrn e.printStackTrace();rn rn rn rn rn rn @Overridern public void run() rn System.out.println("come into run");rn try rn Socket c = getInstance();rn OutputStream ops =c.getOutputStream();rn ops.write(new byte[]0000);rn ops.flush();rn catch (UnknownHostException e) rn // TODO Auto-generated catch blockrn e.printStackTrace();rn catch (IOException ex) rn // TODO Auto-generated catch blockrn ex.printStackTrace();rn rn rn rn public static void main(String[] args) rn Client c = new Client();rn c.sendMsg();rn rnrnrn[/code]rnrn<em>服务端</em>codern[code=java]rnpublic class Server rnrn private ServerSocket serverSocket;rn rn public Server()rn try rn serverSocket = new ServerSocket();rn serverSocket.bind(new InetSocketAddress(8000));rn catch (IOException e) rn // TODO Auto-generated catch blockrn e.printStackTrace();rn rn rn System.out.println("服务启动");rn rnrn public void service() rn while (true) rn Socket s = null;rn try rn s = serverSocket.accept();rn System.out.println("come a new request~ "+s.getInetAddress()+":"+s.getPort());rn catch (IOException e) rn // TODO Auto-generated catch blockrn e.printStackTrace();rn finally rn if(s!=null)rn try rn s.close();rn catch (IOException e) rn e.printStackTrace();rn rn rn rn rnrn /**rn * @param argsrn */rn public static void main(String[] args) rn // TODO Auto-generated method stubrn Server server = new Server();rn server.service();rn rnrnrn[/code]rnrn我的想法是每隔3秒往<em>服务端</em>发送一个数据包,现在的情况是会抛<em>异常</em>:rnjava.net.SocketException: Software caused connection abort: <em>socket</em> write errorrn at java.net.SocketOutputStream.<em>socket</em>Write0(Native Method)rn at java.net.SocketOutputStream.<em>socket</em>Write(Unknown Source)rn at java.net.SocketOutputStream.write(Unknown Source)rn at com.ls.test.Client.run(Client.java:44)rn at com.ls.test.Client.sendMsg(Client.java:28)rn at com.ls.test.Client.main(Client.java:57)rnrn我发现可能是server端把<em>socket</em> close的原因所以去掉了关闭代码:rn finally rn if(s!=null)rn try rn s.close();rn catch (IOException e) rn e.printStackTrace();rn rn rn但现在<em>服务端</em>确只接受一次请求了,不知道为什么rn
为什么Socket服务端会出现监听异常
是这样的,小弟用SocketAsyncEventArgs类写了个web服务器,用的AcceptAsync、ReceiveAsync、SendAsync实现的rn代码是没有报错的,所以并不知道是监听<em>异常</em>还是accept<em>异常</em>或者是其他的rnrn问题发生在:当大量网络爬虫访问一段时间后,<em>服务端</em>就连不上了,访问127.0.0.1也不行,观察发现,这时<em>服务端</em>没有再向外发送流量 ,用Tcp-z查看tcp连接数在快速下降,同时查看任务管理器却发现该进程的线程数却在快速上涨,最后到tcp连接数掉到差不多了,<em>服务端</em>的线程数也降下来了,这时<em>服务端</em>的访问才恢复正常。rnrn感觉应该是爬虫客户端在请求完成后短时间内关闭大量连接时造成的,但这是为什么?而且这时<em>服务端</em>进程的线程数在快速上涨,但我并没有去开任何线程啊,在连接断开后我也执行了Shutdown和Closernrn不明白,该如何解决,新手求教!谢谢
C# Socket BeginReceive方法中参数byte[] buffer 的理解
TcpClient tcpClient; byte[] byteBuffer= new byte[1024*4]; tcpClient.Client.BeginReceive(byteBuffer, 0, byteBuffer.Length, SocketFlags.None, ReceiveCallBack, null); // 参数: // buffer:...
BeginReceive 出现由于系统缓冲区不足或者队列已满,不能执行套接字上的操作!
各位朋友,大家好。。。最近写了一个服务器程序,用以连接多客户端!接收客户端发送过来的数据,之后转发给所以连接的客户端! 客户端连接服务器后发送数据,之后断开再连接,如此重复。。但是出现了如标题所示的错
Socket.BeginReceive 参数解释
Socket.BeginReceive 方法 (Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) .NET Framework (current version) 其他版本   开始从连接的 Socket 中异步接收数据。 命名空间:   System.N
BeginReceive的问题
一个用BeginReceive不停的异步接收数据,还有一个回收线程在回收<em>socket</em>连接。会不会出现下面的情况 1. BeginReceive接收完毕,开始执行异步回调,但是这个时候回收线程唤醒。会不
c# socket BeginReceive
理论上BeginReceive是非堵塞的,然而在实际应用中我发现有时候这个方法也会堵塞,而且是永久性的堵塞。 以下代码在信息不全的判定中出现多次堵死,且每次接收到的字节数都是1440. void Re
未知COM异常
国庆节前我在公司的一台测试服务器(Windows Server 2003 操作系统)的IIS上搭建了一个应用系统,当时使用还真常,今天回来上班想登陆时却出现“<em>未知</em>COM<em>异常</em>”,有哪位高手可以指点指点???
关于dataGridView的未知异常
我用DataSet给dataGridView 帮定了数据可是问题出现了。rnrn当数据一多dataGridView 就出现了下拉框,就是右面的浮动条。当我鼠标去操作浮动条的时候程序就卡死。rn左右一定的浮动条也一样。请问这是什么问题??帮定了数据可是问题出现了。rnrn当数据一多dataGridView 就出现了下拉框,就是右面的浮动条。当我鼠标去操作浮动条的时候程序就卡死。rn左右一定的浮动条也一样。请问这是什么问题??
Objective-C 之 异常未知选择器
Objective-C对象都有一个isa指针,对象可以通过isa指针知道自身的类型。对于一个对象,只能响应所属类中具有相应实现方法的消息。但是对象的类型只能在运行的时候确定,所以就会发生应用向某个对象发送了无法响应的消息。这时候就会抛出<em>异常</em>。
[异常]捕获未知错误
第一阶段(4-10天)rn 该阶段我们正式进入Python这门语言的学习,我们会学习Python语言的核心语法及进阶内容。rn第二阶段(11-13天)rn 该阶段我们会学习面向对象(OOP)这一重要的编程思想rn第三阶段(14-15天)rn 该阶段是项目演练阶段,我们会带领大家通过使用之前学习过的知识开发飞机大战这一经典游戏。
如何处理未知异常
在我的程序里面,我new了一个char*,然后在别的地方delete的时候发生<em>异常</em>了。rnrn但是我不知道<em>异常</em>的具体原因。rnrn请问在try catch里面该如何处理,才能够知道<em>异常</em>的具体信息?
怎么强行停止BEGINRECEIVE过程(不是关闭SOCKET哦)
private void ReceiveA(Socket client) { try { StateObject state = new StateObject(); state.workSocket
Socket.beginreceive 抛出无法访问已释放资源
-
异步Beginreceive怎么中止调用?(内详)
我的程序是利用异步,从客户端发送信息,然后接受服务器的信息。 问题在于在过程之中我要连续发送3条信息得到不同的回馈,但是在第一次BEGINRECEIVE调用异步操作时,就会陷入不停接收的循环(就是每隔
异步Socket的BeginReceive()方法里AsyncCallback方法里面为什么还要重新写BeginReceive()?
异步Socket的BeginReceive()方法里AsyncCallback方法里面为什么还要重新写BeginReceive()? 异步Socket的BeginAccpet()方法里AsyncCal
关于BeginReceive回调函数的问题
在C#中,试图用异步方式获得数据, Beginreceive(...),其中的回调函数是在收到数据时触发,但仅仅是触发这个回调函数,那么在回调函数中如何得到收到的数据以及本次收到的数据长度呢?难道只能
ADO异常:未知错误
tryrn rn // 创建Connection对象rn m_Connection.CreateInstance("ADODB.Connection");rn rn // 设置连接字符串,必须是BSTR型或者_bstr_t类型rn _bstr_t strConnect =strConn;rn //m_Command.CreateInstance(__uuidof(Command));rn m_Connection->Open(strConnect,"","",adModeUnknown);rn //等待时间10srn m_Connection->ConnectionTimeout=10;rnrn rncatch <em>未知</em>错误rnwhy???
关于Socket中的BeginSend与BeginReceive方法。
小弟用下面的方法异步传送数据:rnif(IsSending)//IsSending是自己定义的一个Socket是否处于发送状态的标志rnrn ... ...rn ... ...rnrnelsernrn AsyncCallback asyncCallback=new AsyncCallback(OnSendCallback);rn UserSocket.BeginSend(sendBuff,0,1024,0,asyncCallback,UserSocket);rn IsSending=true;rnrnrnrnprivate void OnSendCallback(IAsyncResult ar)rnrn Socket client=(Socket)ar.AsyncState;rn client.EndSend(ar);rn IsSending =false;rnrnrnrn小弟是想问是否有必要这么做,如果一次的BeginSend没有完成,下次再BeginSend会不会有什么影响。rn同样,对正在BeginReceive的Socket再次BeginReceive有么有影响?
异常产生
Java一直作为优秀的编程语言活跃于软件开发行业,掌握Java不仅是一件兴奋的事,更是一把可以帮助你轻松进入软件行业大门的一把金钥匙,本套课程将为读者讲解Java8的所有核心技术知识,一共240集的Java8开发课程,全网独一无二的教学视频资料,你还等什么?赶紧来学吧!官方QQ群:612148723。
Socket异步下载网页,阻塞在BeginReceive下
代码是根据http://msdn.microsoft.com/en-us/library/bew39x2a(v=vs.110).aspx 这上面的写的,这上面是代码是异步通信的例子,我想应该也适合下载网页吧,所以我把Send(client,"This is a test"); 改为 rnSend(client, ”GET / HTTP/1.1\r\nHost: www.baidu.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko\r\nAccept-Language: en-US;q=0.8,en-US;q=0.6,en;q=0.4\r\nConnection: Keep-Alive\r\nCookie: \r\n\r\n“);rnrn经过我的调试是能下载网页的,但是在这一步:rnrn[code=csharp]rnprivate static void ReceiveCallback( IAsyncResult ar ) rn try rn // Retrieve the state object and the client <em>socket</em> rn // from the asynchronous state object.rn StateObject state = (StateObject) ar.AsyncState;rn Socket client = state.workSocket;rnrn // Read data from the remote device.rn int bytesRead = client.EndReceive(ar);rnrn if (bytesRead > 0) rn // There might be more data, so store the data received so far.rn state.sb.Append(Encoding.ASCII.GetString(state.buffer,0,bytesRead));rnrn // Get the rest of the data.rn client.BeginReceive(state.buffer,0,StateObject.BufferSize,0,rn new AsyncCallback(ReceiveCallback), state);rn else rn // All the data has arrived; put it in response.rn if (state.sb.Length > 1) rn response = state.sb.ToString();rn rn // Signal that all bytes have been received.rn receiveDone.Set();rn rn catch (Exception e) rn Console.WriteLine(e.ToString());rn rn rn[/code]rn出现问题,我一步一步调试,发现可以完整下个整个网页源代码。唯一的问题是bytesRead 永远不可能为0.我想知道为什么。 当整个网页下载完成后,到这一步 // Get the rest of the data.rn client.BeginReceive(state.buffer,0,StateObject.BufferSize,0,rn new AsyncCallback(ReceiveCallback), state);,便永远不会再往下执行了。rnbytesRead 值在未下载完成之前都是256,等快下载结束时,因为最后的数据不够256字节,可能是50或者其它的数值,我想着再循环一次就会变成0了,但却卡在了 client.BeginReceive(state.buffer,0,StateObject.BufferSize,0,rn new AsyncCallback(ReceiveCallback), state);这句代码上,我想知道为什么,是不是异步通信与下载网页是完全不一样的情况,怎么修改?rnrn别外,我想找一个使用<em>socket</em>下载网页的类,有了解这方面的,期待可以告诉我一个。在网上找了许多下载网页的方法,都是webrequest,没有<em>socket</em>类的。
C# socket的BeginReceive和ReceiveAsync有什么区别
我看官网说“这些增强功能的主要功能是避免在高容量异步套接字I / O期间重复映射和同步对象。当前实现System.Net.Sockets.Socket类的Begin / End设计模式需要为每个异步套
我在服务端socket异步监听事件里,创建了一个socket客户端,它连接另外一个socket服务端,跑起来cpu占用很高,问题出哪里了?
我在<em>服务端</em><em>socket</em>异步监听事件里,创建了一个<em>socket</em>客户端,它连接另外一个<em>socket</em><em>服务端</em>,跑起来cpu占用很高,问题出哪里了? using System; using System.Net
关于beginreceive和endreceive的一些疑惑
上次发帖没有问明白,所有在亮出了: <em>socket</em>.<em>beginreceive</em>(byte,offset,size,<em>socket</em>flags,asynccallback) int endreceive(ias
C#下Socket对象的BeginReceive方法,执行后竟然不调用AsyncCallback里的回调函数
到底是怎么回事?仅仅发生在我的机器上,修改了ip配置后放到别的机器上是没有任何问题的,可以很好的回调。难道我的机器有何<em>异常</em>?请教高手了!某一线程下<em>socket</em>对象user.sock开始执行BeginReceive语句:         user.sock.BeginReceive(user.buffer,0,User.BufferSize,0,new System.AsyncCallbac
c#中BeginReceive,怎么设置数据接收的大小
<em>socket</em>.BeginReceive(Buffer, 0, Buffer.lenth, 0, new AsyncCallback(ReadCallback), stateOne);大家好,这个是异步
WinForm: Socket 是否已经在BeginReceive呢?
WinForm:rnrnSocket,用的是异步,发送sock.BeginSend(),接收sock.BeginReceive(),。。。rnrn请问怎么判断这个sock当前是否已经在BeginReceive呢?rnrn就是我怕程序中某些地方遗漏了写sock.Beginreceive(),而已经BeginReceive()的就不用在去些了。形如:rnrnif(!sock.IsBeginReceive) //关键是这里怎么判断rn sock.BeginReceive(); rn这样的句法rnrn谢谢
socket里面的BeginReceive,求指导!
<em>服务端</em>使用BeginReceive 这个方法时,客户端会有什么响应吗?rnrn
Socket 服务端
以前写过一个Socket<em>服务端</em>程序,但在写4G模块项目的时候,遇到了一个问题,就是在<em>服务端</em>断开Socket客户端连接后,客户端收不到断开的状态,而且使用异步时,明明<em>服务端</em>停止服务了,但是客户端的连接依然还在,只不过不接收数据了,但客户端和<em>服务端</em>的连接照样还是在进行,所以花费了一天时间,继续研究Socket机制,写了一个<em>服务端</em>程序,这个程序不仅可以统计客户端数量,而且可以对收到的消息...
socket服务端
vb.net <em>socket</em> 服务器端建立<em>socket</em>,监听端口
socket 服务端
( 同步)(1) 一个客户端,一个<em>服务端</em>,那针对客户端不停的发数据,那么<em>服务端</em>是怎样的。rnrn (2) 一个客户端,一个<em>服务端</em>,客户端一段一段时间的发,那么<em>服务端</em>是怎样的。rnrn(异步) 多个客户端,一个<em>服务端</em>,多个客户端都给<em>服务端</em>发数据,那么<em>服务端</em>是怎样的。rnrn rnrn我现在只是明白无论是同步还是异步<em>服务端</em>都要监听,rnrn那么对于同步,<em>服务端</em>监听到有连接了。那么接下来要怎么做呢? 对于同步客户端一段一段时间的发数据,那么有疑问了?<em>服务端</em>监听到的是一个连接,还是多个连接? rnrn那么对于异步,多个客户端,一个<em>服务端</em>,<em>服务端</em>还是要不停地监听。那么监听完以后,那么多客户端请求,要怎么办呢?看了一部分资料,但是愚笨的我还是不了解 提到的 回调函数 ,为什么要用回调函数呢?rnrn rn
C# UdpClient使用Receive和BeginReceive接收消息时的不同写法
使用Receive(同步阻塞方式), 注意使用同步方法时,需要使用线程来开始方法,不然会使UI界面卡死 IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 5858); UdpClient udpClient = new UdpClient(RemoteIpEndPoint);
c#中的socket
首先学到的是 其BeginReceive 和BeginAccept等异步调用方法 入口中的回调函数 都是自己又开了一个线程 1http://www.cnblogs.com/chenxizhang/archive/2011/09/10/2172994.html 基本知识 其次经过一个星期的大概使用 终于通了 大概总结如下 一个scoket 如果当做服务器用的话 也就是说调用的是listen()和accept() 那他的接收和发送的类并不是他本身 而是在endaccept()后新生
Windows Service --Socket通讯,异常崩溃,一直找不到原因
来自“Service1”的全局<em>异常</em>。Cannot access a disposed object. Object name: 'System.Net.Sockets.Socket'.详细信息如下:
socket服务端
<em>socket</em> 用c++写的<em>服务端</em>代码 并用mfc生成了<em>服务端</em>
服务端socket
<em>服务端</em>Socket 1、什么是<em>服务端</em><em>socket</em>? <em>服务端</em><em>socket</em>是一个运行在服务器上的,监听入站TCP连接的连接。每个<em>服务端</em><em>socket</em>监听服务器上的一个特定端口。当远程主机上的一个客户端尝试连接这个端口时,<em>服务端</em>就被唤醒,协商建立客户端和服务器之间的连接,并返回一个常规的Socket对象,表示两台主机之间的<em>socket</em>。换句话说,<em>服务端</em><em>socket</em>等待连接,而客户端发起连接。一旦ser
C# BeginReceive
目前是接收一次处理一次,当对方发动数据大于我定义的长度1024后,后面的数据就错了;rn想修改为全部接收完再做处理,应该怎么修改???rnrn代码如下:rn[code=csharp] public void ReceivedCallback(IAsyncResult ar)rn rn tryrn rn StateObjectClass state = (StateObjectClass)ar.AsyncState;rn Socket handler = state.workSocket;rn if (handler == null) return;rnrn if (handler.Connected != true)rn rn handler.Close();rn //客户端退出rn //...rn return;rn rnrn int bytesRead = handler.EndReceive(ar);rn state.bytesRead = bytesRead;rnrn if (bytesRead != 0)rn rn //CommAction 方法内容: a.截取所发指令的前面几个字节分析是不是要求的指令rn //里面有一个 state.packetBuff = state.buffer.Take(bytesRead).ToArray();的操作 rn state = CommAction(state);rn rn if (state.CommandString != "")rn //处理指令rnrn //回调rn handler.BeginReceive(state.buffer, 0, StateObjectClass.BufferSize, 0,rn new AsyncCallback(ReceivedCallback),rn state);rn rn elsern rn handler.Close(); //客户端退出rn //...rn rn rn catch (SocketException ex)rn rn if (ex.ErrorCode == 10054) //客户端关闭连接rn rn //...rn rn rn catch (Exception ex)rn rn //...rn rn [/code]
JAVA Socket服务端 的到socket的连接数
RT:怎么获取 多少个客户端连接我的<em>服务端</em>,求大神指教!!!
android 调用web服务未知异常
[code=Java]rnrnrnrn rn rn rn rnrnrnrnrnrnpackage com.example;rnrnimport java.io.InputStream;rnimport java.io.OutputStream;rnimport java.net.HttpURLConnection;rnimport java.net.URL;rnimport org.xmlpull.v1.XmlPullParser;rnimport android.util.Log;rnimport android.util.Xml;rnimport org.ksoap2.SoapEnvelope;rnimport org.ksoap2.serialization.SoapObject;rnimport org.ksoap2.serialization.SoapPrimitive;rnimport org.ksoap2.serialization.SoapSerializationEnvelope;rnimport org.ksoap2.transport.AndroidHttpTransport;rn rnpublic class MobileService rn public static String getMobileAddress(String mobile) throws Exception rn String path = "http://192.168.0.38/pdaService/Service.asmx?wsdl"; rnrn InputStream is = MobileService.class.getClassLoader().getResourceAsStream("mobile.xml"); rn byte[] data = StreamTool.readInputStream(is); rn String xmlStr = new String(data); rnrn /* 替换掉 手机号码的占位符 */ rn xmlStr = xmlStr.replaceAll("\\$mobile", mobile); rn Log.i("MobileService", xmlStr); rnrn data = xmlStr.getBytes("UTF-8"); rn URL url = new URL(path); rn HttpURLConnection conn = (HttpURLConnection) url.openConnection(); rnrn // 设置请求参数与请求头 rn conn.setReadTimeout(4*1000); rn conn.setRequestMethod("POST"); rn conn.setDoOutput(true); rn conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8"); rn conn.setRequestProperty("Content-Length", "" + data.length); rnrn // 将数据写往服务器 rn [color=#FF0000]OutputStream os = conn.getOutputStream(); 在这里报错~! [/color]rn os.write(data); rn os.flush(); rn os.close(); rnrn if(conn.getDoInput()) rn /* 解析服务器返回的信息 */ rn is = conn.getInputStream(); rn return parseInput(is); rnrn rn /** rn * 从输入流中解析出号码归属地 rn */ rn private static String parseInput(InputStream is) throws Exception rn XmlPullParser parser = Xml.newPullParser(); rn parser.setInput(is, "UTF-8"); rn int et = parser.getEventType(); rn rn while(et != XmlPullParser.END_DOCUMENT) rn switch(et) rn case XmlPullParser.START_TAG : rn String tagName = parser.getName(); rn if(tagName != null && "getMobileCodeInfoResult".equals(tagName)) rn return parser.nextText(); rn rn rn et = parser.next(); rn rn return ""; rn rnrnrnrnrnrnrnpackage com.example;rnrnimport android.app.Activity;rnimport android.os.Bundle;rnimport android.os.Handler;rnimport android.util.Log;rnimport android.view.View;rnimport android.widget.Button;rnimport android.widget.EditText;rnimport android.widget.TextView;rnimport android.widget.Toast;rnimport org.ksoap2.SoapEnvelope;rnimport org.ksoap2.serialization.SoapObject;rnimport org.ksoap2.serialization.SoapPrimitive;rnimport org.ksoap2.serialization.SoapSerializationEnvelope;rnimport org.ksoap2.transport.AndroidHttpTransport;rnrnpublic class MainActivity extends Activity rn protected static final String TAG = null;rn private TextView resultView;rn private EditText mobileText;rn Handler handler=new Handler();rn// protected static final EditText mobileText =null;rn// protected static final Button button =null;rn// protected static final TextView resultView =null;rn /** Called when the activity is first created. */rn @Overridern public void onCreate(Bundle savedInstanceState) rn super.onCreate(savedInstanceState);rn setContentView(R.layout.main);rnrn /* 用于输入待查手机号码文本框 */ rn mobileText = (EditText) findViewById(R.id.mobile); rn /* 用于输出查询结果的标签 */ rn resultView = (TextView) findViewById(R.id.result); rn /* 确认查询按钮 */ rn Button button = (Button) findViewById(R.id.button); rn rn /* 为其绑定点击事件 */ rn button.setOnClickListener(new View.OnClickListener() rn public void onClick(View v) rn String mobile = mobileText.getText().toString(); rn try rn /* 调用业务方法,获取手机归属地 */ rn String result = MobileService.getMobileAddress(mobile); rn resultView.setText(result); rn catch (Exception e) rn Toast.makeText(MainActivity.this, R.string.error, Toast.LENGTH_LONG).show(); rn Log.e(TAG, e.toString()); rn rn rn ); rnrn rnrnrnrnrnpackage com.example;rnrnimport java.io.ByteArrayOutputStream;rnimport java.io.InputStream;rnrnpublic class StreamTool rn public static byte[] readInputStream(InputStream is) throws Exception rn ByteArrayOutputStream bos = new ByteArrayOutputStream(); rn byte[] buffer = new byte[1024]; rn int len; rnrn while((len = is.read(buffer)) != -1 ) rn bos.write(buffer, 0, len); rn rn is.close(); rn bos.close(); rn return bos.toByteArray(); rn rnrnrnrnrn rn rn $mobile rn rn rn rnrnrnrnrnrnrnrn rnrn rnrn 返回的手机号码归属地rnrn rnrn rnrnrnrnrn[/code]
socket异常
为什么在jsp中经常出现<em>socket</em><em>异常</em>,怎样解决?rnjava.net.SocketException: Software caused connection abort: <em>socket</em> write errorrn at java.net.SocketOutputStream.<em>socket</em>Write0(Native Method)rn at java.net.SocketOutputStream.<em>socket</em>Write(SocketOutputStream.java:92)rn at java.net.SocketOutputStream.write(SocketOutputStream.java:136)rn at org.apache.catalina.connector.ResponseBase.flushBuffer(ResponseBase.java:675)rn at org.apache.catalina.connector.HttpResponseBase.doFlushBuffer(HttpResponseBase.java:795)rn at org.apache.catalina.connector.HttpResponseBase.flushBuffer(HttpResponseBase.java:785)rn at org.apache.catalina.connector.ResponseBase.write(ResponseBase.java:594)rn at org.apache.catalina.connector.ResponseStream.write(ResponseStream.java:268)rn at org.apache.catalina.connector.http.HttpResponseStream.write(HttpResponseStream.java:160)rn at javax.servlet.ServletOutputStream.print(ServletOutputStream.java:135)rn at javax.servlet.ServletOutputStream.println(ServletOutputStream.java:269)rn at org.apache.catalina.connector.http.HttpResponseStream.write(HttpResponseStream.java:184)rn at org.apache.catalina.servlets.DefaultServlet.copyRange(DefaultServlet.java:1996)rn at org.apache.catalina.servlets.DefaultServlet.copy(DefaultServlet.java:1745)rn at org.apache.catalina.servlets.DefaultServlet.serveResource(DefaultServlet.java:1073)rn at org.apache.catalina.servlets.DefaultServlet.doGet(DefaultServlet.java:506)rn at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)rn at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)rn at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)rn at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)rn at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)rn at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)rn at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)rn at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)rn at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)rn at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)rn at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)rn at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)rn at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)rn at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)rn at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)rn at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)rn at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)rn at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)rn at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)rn at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)rn at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)rn at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:158)rn at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)rn at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)rn at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)rn at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)rn at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)rn at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)rn at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)rn at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1040)rn at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1151)rn at java.lang.Thread.run(Thread.java:534)
socket 异常
java.net.SocketException: Connection reset by peerrnjava.net.SocketException: Socket closedrn这两个错误怎么解决?
捕获未知异常,重写onError
因为要捕获<em>未知</em><em>异常</em>,网上看了一下Duwamish的pagebase类是通过重写onError把<em>异常</em>信息写到了日志里去,同样我得写了,可是页面出错的时候好像没有触发到事件得写的地方rnrn请求大家帮助
socket性能测试程序的未知问题
原始代码:rnhttp://hi.baidu.com/tsuibin/blog/item/60f46430fc849113eac4af71.htmlrnrn我在使用这个程序的时候,会出现 Segmentation fault 错误,但是我不知道这个错误是为何<em>产生</em>的,rnrn例如我在上次运行时,创建到第35个线程,rn thread 35rnSegmentation faultrnrn请高手帮助解决问题!rnrn[code=C/C++]rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#define MAXDATASIZE 1000rnrnvoid *thread(void* test)rnrn int sockfd,numbytes;rn char buf[MAXDATASIZE];rn struct hostent *he;rn struct sockaddr_in their_addr;rn unsigned int myport;rn int i;rn myport = 80;rn for(i=0;ih_addr);//here is different with RHELrn bzero(&(their_addr.sin_zero),0);rn if(connect(sockfd,(struct sockaddr *)&their_addr,sizeof(struct sockaddr)) == -1)rn perror("connect");rn exit(1);rn rnrn //printf("test %d",i);rn char requestheader[1024];rn memset(requestheader,'\0',1024);rn strcat(requestheader,"GET /\r\n");rn if((numbytes=send(sockfd,requestheader,MAXDATASIZE,0)) == -1)rn perror("send");rn exit(1);rn rnrn numbytes=0;rn if((numbytes=recv(sockfd,buf,MAXDATASIZE,0)) ==-1)rn perror("recv");rn exit(1);rn rn buf[numbytes]=0;rn printf("Received: %s \n thread %d\r\n",buf,i);rn close(sockfd);rn rnrnint main(void)rnrn pthread_t id;rn int i,ret;rn pthread_attr_t attr;rn pthread_attr_init(&attr);rn pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);rn for(i=0;i);rn exit(1);rn rn rn return 0;rnrnrn[/code]
客户端断开服务端就会产生异常并断开
WIN10上开发一个<em>服务端</em>程序,它能监听来自多个客户端的请求并连接,其中客户端会往<em>服务端</em>传送文件,使用SOCKET tcp协议。现在是每次客户端发送完文件后,<em>服务端</em>也能正常接收完文件,但接收完后就会<em>产生</em><em>异常</em>退出。是开的线程来运行接收函数,现在要怎样定位问题呢?exe直接退出要应该怎么抓取log呢? 接收部分代码如下:nDWORD CClient::RecvDataThread(void* pParam)nn CClient *pClient = (CClient*)pParam; //pointer to clientn int reVal; //return valuen char temp[MAX_NUM_BUF]; //temp valuenn WriteToLog("RecvDataThread");n cout < 0)n n cout m_addr.sin_port);n // cout<< 1024 ? 1024 : strlen(temp));n nn FILE *fp;n fopen_s(&fp, file_name, "wb");n int len = send(pClient->m_<em>socket</em>, "Ready to send", strlen("Ready to send") + 1, 0);n memset(sendMsgLogA, 0, 1024);n sprintf_s(sendMsgLogA, "%s%d", "send size: ", len );n WriteToLog(sendMsgLogA);n n char datalength[20];n long int length = 0;n int lenRecv = recv(pClient->m_<em>socket</em>, datalength, 21, 0); //send file size from Clientn length = atol(datalength);nn memset(sendMsgLogA, 0, 1024);n sprintf_s(sendMsgLogA, "%s%ld%s%ld", "file size: ", length, " recv size:", lenRecv);n WriteToLog(sendMsgLogA); //ready to sendnn double cent = 0.0;n char receiveBuf[SIZE];n long int x = 0;n while (1)n n cout m_cs);n WriteToLog("out of LeaveCriticalSection");n memset(temp, 0, MAX_NUM_BUF); //clean up temp variablesn n n WriteToLog("out of pClient->m_bConning");n pClient->m_bConning = FALSE; //disconnect with clientn return 0; //thread exitnnn```n n```nnn
为什么会产生异常????
代码如下:(用来保存网页)rn执行HttpWebResponse myResponse=rn (HttpWebResponse)myRequest.GetResponse();rn时会<em>产生</em><em>异常</em>,为什么?rnprivate void btnDown_Click(object sender, System.EventArgs e)rn rn // 构造Web请求rn HttpWebRequest myRequest =rn (HttpWebRequest)WebRequest.Create(txtURL.Text);rn // 发送请求获得响应rn HttpWebResponse myResponse=rn (HttpWebResponse)myRequest.GetResponse();rn // 使用到的读写流rn Stream myStream=null;rn FileStream myfileStream=null;rnrn tryrn rn // 获得流rn myStream=myResponse.GetResponseStream();rn // 获得文件长度rn long fileSizeInBytes=myResponse.ContentLength;rn // 创建文件流对象rn myfileStream=newrn FileStream(txtLocalFile.Text,FileMode.OpenOrCreate,FileAccess.Write);rn // 读取数据缓冲长度和缓冲区rn int myLength=1024;rn byte[] mybuffer=new byte[1025];rn int bytesread=0;rn // 从网络中读取数据rn while((bytesread=myStream.Read(mybuffer,0,bytesread))>0)rn rn // 把数据写入文件rn myfileStream.Write(mybuffer,0,bytesread);rn rn rn catch(Exception xe)rn rnrn rn finallyrn rn // 关闭流rn if(myStream!=null)rn myStream.Close() ;rn if(myfileStream!=null)rn myfileStream.Close();rn rn
产生异常的原因?
import java.io.*;rnimport java.util.*;rnrnclass Blip1 implements Externalizable rnrn public Blip1() rn rn System.out.println("Blip1 Constructor");rn rn rn public void writeExternal(ObjectOutput out) throws IOException rn rn System.out.println("Blip1.writeExternal");rn rn rn public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException rn rn System.out.println("Blip1.readExternal");rn rnrnrnclass Blip2 implements Externalizable rnrn Blip2() rn rn System.out.println("Blip2 Constructor");rn rn rn public void writeExternal(ObjectOutput out) throws IOException rn rn System.out.println("Blip2.writeExternal");rn rn rn public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException rn rn System.out.println("Blip2.readExternal");rn rnrnrnpublic class Blips rnrn public static void main(String[] args) rn rn System.out.println("Constructing objects:");rn Blip1 b1 = new Blip1();rn Blip2 b2 = new Blip2();rn try rn rn ObjectOutputStream o = new ObjectOutputStream( new FileOutputStream("Blips.out"));rn System.out.println("Saving objects:");rn o.writeObject(b1);rn o.writeObject(b2);rn o.close();rn // Now get them back:rn ObjectInputStream in = new ObjectInputStream(new FileInputStream("Blips.out"));rn System.out.println("Recovering b1:");rn b1 = (Blip1)in.readObject();rn System.out.println("Recovering b2:");rn b2 = (Blip2)in.readObject(); //为何在此处发生<em>异常</em>????rn rn rn catch(Exception e) rn rn e.printStackTrace();rn rn rn ///:~
让手机产生异常
<em>产生</em> kernel  panic  echo c &amp;gt; /proc/sysrq-trigger
下载文件,产生FileNotFound异常
netbeans编译环境编码是utf-8,服务器编码是GBKrn代码如下:rntryrn path="ftp://user:pwd@ip/文件/资料/可惜.doc";rn String urlpath=new String(path.getByte("utf-8"),"gbk");rn URL url=new URL(path);rn URLConnection con=url.openConnection();rn DataInputStream dis=new DataInputStream(con.getInputStream);rn File file=new File(c:/);rn DataOutputStream dos=new DataOutputStream(new FileOutputStream(file));rn byte[]b=new byte[16];rn int lenth=0;rn while((lenth=dis.read(b)!=-1))rn dos.write(b);rn rn dos.flush();rncatch(Exception e)rnrn大家给点帮助,谢谢!
org.apache.commons.net.ftp.FTPConnectionClosedException异常产生原因
在一个项目运行过程中出现了org.apache.commons.net.ftp.FTPConnectionClosedException: FTP response 421 received. Server closed connection.的<em>异常</em>情况。rn使用的是apache的开源FTP连接包rnrn在J2SE中的多个线程调用FTP连接,这种<em>异常</em>情况只是偶尔出现。rnrn<em>异常</em>代码如下:rnrnorg.apache.commons.net.ftp.FTPConnectionClosedException: FTP response 421 received. Server closed connection.rn at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:346)rn at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:490)rn at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:534)rn at org.apache.commons.net.ftp.FTP.cwd(FTP.java:758)rn at org.apache.commons.net.ftp.FTPClient.changeWorkingDirectory(FTPClient.java:716)rnrn请知晓的大侠告诉我,<em>产生</em>这个问题的原因。
引用dll产生异常
我用c++在引用别人写的dll时,按照他给的接口函数还有例子写,得不到正确的结果,vs调试每当调用函数时就会<em>产生</em><em>异常</em>rn[code=text]testdll.exe 中的 0x758ec54f (KernelBase.dll) 处最可能的<em>异常</em>: Microsoft C++ <em>异常</em>: 内存位置 0x0017ec4c 处的 unsigned long。rntestdll.exe 中的 0x758ec54f (KernelBase.dll) 处最可能的<em>异常</em>: Microsoft C++ <em>异常</em>: 内存位置 0x00000000 处的 [rethrow]。rntestdll.exe 中的 0x758ec54f (KernelBase.dll) 处最可能的<em>异常</em>: Microsoft C++ <em>异常</em>: 内存位置 0x00000000 处的 [rethrow]。rntestdll.exe 中的 0x758ec54f (KernelBase.dll) 处最可能的<em>异常</em>: Microsoft C++ <em>异常</em>: 内存位置 0x00000000 处的 [rethrow]。[/code]rnrn他给的调用方法和例子:[code=c]int CalcDeriveKeys(const char* reader, const char* lockNumber, const char* mac, char* key1, char* key2, char* key3, char* key4);[/code]rnrn例子[code=c]TCHAR reader[] = "card";rnchar lockNumber[] = "00000000005FB4";rnchar mac[] = "9BFADBD6";rnchar key1[16] = 0;rnchar key2[16] = 0;rnchar key3[16] = 0;rnchar key4[16] = 0;rnCalcDeriveKeys(reader, lockNumber, mac, key1, key2, key3, key4);rn[/code]rnrn我的代码rn[code=c]int main()rnrn typedef int (*lpDllfun)(const char* reader, const char* lockNumber, const char* mac,char* key1,char* key2,char* key3, char*key4);rn lpDllfun Readcard1;rn HMODULE hdll;rn hdll = LoadLibrary(_T("Export.dll"));rn int asl = 0;rn TCHAR reader[] = "card";rn char lockNumber[] = "00000000005FB4";rn char mac[] = "9BFADBD6";rn char key1[16] = 0;rn char key2[16] = 0;rn char key3[16] = 0;rn char key4[16] = 0;rn if(hdll!=NULL)rn rn Readcard1 = (lpDllfun)GetProcAddress(hdll,"CalcDeriveKeys");rn if(Readcard1!=NULL)rn rn asl = Readcard1(reader, lockNumber, mac, key1, key2, key3, key4);rn std::cout<
异常产生及处理
<em>异常</em>是程序之中导致程序中断的一种指令流,为了帮助读者更好的理解<em>异常</em>出现时所带来的问题,将通过两个程序来进行<em>异常</em><em>产生</em>问题的对比。 不<em>产生</em><em>异常</em>的代码 public class TestDemo { public static void main(String args[]) { System.out.println("1、除法计算开始。"); System.out.println("2、
异常产生及处理
<em>异常</em><em>产生</em>及处理 1.<em>异常</em>概述 什么是<em>异常</em>?Java代码在运行时期发生的问题就是<em>异常</em>。 在Java中,把<em>异常</em>信息封装成了一个类。当出现了问题时,就会创建<em>异常</em>类对象并抛出<em>异常</em>相关的信息(如<em>异常</em>出现的位置、原因等)。 在Java中使用Exception类来描述<em>异常</em>。 查看API中Exception的描述,Exception 类及其子类是 Throwable 的一种形式,它用来表示j...
使用进度条产生异常
int nLower=0,nUpper=20;rnpDlg->myProgressBar.SetRange(nLower,nUpper);//在此处有时会<em>产生</em><em>异常</em>,有时正常,为何?
产生异常
#include rnusing namespace std;rnrntemplate rnclass LinearList rn rn public: rn virtual bool IsEmpty() const=0; rn virtual int Length() const=0; rn virtual bool Find(int i,T& x) const=0; rn virtual int Search(T x) const=0; rn virtual bool Insert(int i,T x)=0;rn virtual bool Delete(int i)=0; rn virtual bool Update(int i,T x)=0;rn virtual void shuchu()const=0; rn protected:rn int n; //线性表的长度rn;rn rn rntemplate rn class SeqList:public LinearListrn rn public:rn SeqList(int mSize);rn ~SeqList() delete [] elements;;rn bool IsEmpty() const;rn int Length() const;rn bool Find(int i,T& x) const; rn int Search(T x) const; rn bool Insert(int i,T x);rn bool Delete(int i);rn bool Update(int i,T x);rn void shuchu()const ; rn private:rn int n;rn int maxLength; //顺序表的最大长度rn T *elements; //动态一维数组的指针rn ;rn template rn SeqList::SeqList(int mSize)rn rn maxLength=mSize;rn elements=new T[maxLength]; //动态分配顺序表的存储空间rn int n=0;rn rn template rn bool SeqList::IsEmpty() constrn rn return n==0;rn rn template rn int SeqList::Length() constrn rn return n;rn rn templatern bool SeqList::Find(int i,T& x) constrn rn if (in-1) //对i进行越界检查rn cout<<<);rnreturn 0;rn
delete时,产生异常
[code=C/C++]rnrnrnvoid CHtml::PraseBody( void ) rnrn unsigned char *pTempStr = new unsigned char[sizeof(unsigned char) * ( 200000 )] ;rn long iNext = 0 ;rn pBody[0] = '\0' ;rnrn while( pText[iNext - 1] != '\0' ) // 第一次循环,数组下标是 -1 有待改善 rn rn iNext = GetLineString( pTempStr, iNext ) ;rn strcat( (char *)pTempStr, "\r\n" ) ;rn printf( "%s\n\n\n", pTempStr ) ;rn if( strlen( (char *)pTempStr ) > 70 && IfChineseString( pTempStr ) )rn rn printf( "%s\n", pTempStr ) ;rn RemoveHtmlArc( pTempStr ) ;rn ReplaceSubString( pTempStr, (unsigned char *)" ", (unsigned char *)" " ) ; rn if( strlen( (char *)pTempStr ) > 50 ) rn rn strcat( (char *)pBody, (char *)pTempStr ) ;rn rn rn iNext++ ;// '\n'后面的字符rn rn delete pTempStr ; //为什么释放内存会<em>产生</em>错误,使程序无法运行下去rnrn[/code]
为什么ExecuteReader()产生异常
ExecuteReader()<em>产生</em><em>异常</em>rnrn public bool GetTables(OleDbDataReader myDataReader)rn rn OleDbDataReader mylocalDataReader = null;rnrn bool mySuccessFlag = false;rn tryrn rn if (myConnectFlag)rn rn mySQL = "SELECT [Name] FROM MSysObjects"rn + "WHERE Type = 1 And Left([Name],1)< >'~'"rn + "And Left([Name],4) < > ' MSys'Order By [Name]";rn // string strCommand = "SELECT * FROM school"; rnrn OleDbCommand myCommand = new OleDbCommand( mySQL,myConnection);rnrn mylocalDataReader = myCommand.ExecuteReader(); //<em>产生</em><em>异常</em>rn mySuccessFlag = true;rn rn rn catch (Exception e)rn rn Console.WriteLine(e.ToString());rnrn rnrn myDataReader = mylocalDataReader;rn return mySuccessFlag;rn rn rn请高手指点:rnrn
为什么产生异常?!求救!
rn 为什么rn String bdlx=request.getParameter("bdlx");rn if(!bdlx.equals(null))....执行完<em>产生</em>如下错误?rnrntype Exception reportrnrnmessage rnrndescription The server encountered an internal error () that prevented it from fulfilling this request.rnrnexception rnrnorg.apache.jasper.JasperExceptionrn org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:346)rn org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)rn org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:810)rnrnrnroot cause rnrnjava.lang.NullPointerExceptionrn org.apache.jsp.gl.querywork_jsp._jspService(querywork_jsp.java:200)rn org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:810)rn org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)rn org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)rn org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:810)rnrnrn
ANR异常产生和解决方案
1.概念解释: ANR : Application No Response。 在Android中,应用的响应性被活动管理器(Activity Manager)和窗口管理器(Window Manager)这两个系统服务所监视。当用户触发了输入事件(如键盘输入,点击按钮等),如果应用5秒内没有响应用户的输入事件,那么,Android会认为该应用无响应,便弹出ANR对话框。2.用代码模拟:在主线程s
winsock 发送数据产生异常
建立连接后,第一次可以正常发送数据,但第二次发送数据时会<em>产生</em>0X800A9C46<em>异常</em>,不能发送数据,请问高手是什么原因。多谢
连接数据库时产生异常
我在向数据库中增加数据时,<em>产生</em><em>异常</em>:rnrnProject Hocm_sys.exe raised exception class EAccessViolation with rnmessage 'Access violation at address 004B40B8 in modulern'Hocm_sys.exe'. Read of address 00000060'. Process stopped. UsernStep or Run to continue.rnrn然后光标就停在: "with DataM.Loginadoq do" 这一行.rnrn请各位大虾帮忙解决下,小弟在此谢过了!
Socket 异步服务端控制台程序
异步处理 <em>socket</em> <em>服务端</em>,断开后自动释放资源,支持重新链接
Socket服务端与客户端通讯
Socket<em>服务端</em>与客户端通讯,实现一对一聊天,详细请看博客文章
Socket demo (服务端和客户端)
Socket demo (<em>服务端</em>和客户端)支持多链接,性能测试等
socket服务端+客户端
C# Socket<em>服务端</em>通讯的代码,使用异步方式进行通讯,并且可以同时支持多个客户端连接。
C# socket通讯服务端
一套俄罗斯人写的数据采集程序的<em>服务端</em>框架,比较简单,适合学习网络通讯有关的内容
socket服务端linux
<em>socket</em><em>服务端</em>代码,用来测试监听的 g++ server.cpp -o server
socket服务端绑定问题
<em>socket</em>作为<em>服务端</em>,是否绑定的地址必须和启动<em>socket</em><em>服务端</em>程序的主机地址相同,这样的话,<em>服务端</em>绑定地址是否可以不用指定,以127.0.0.1代替。
实现网络Socket服务端
1.<em>服务端</em>编程流程 2.<em>服务端</em>编程–具体实现 编程流程: 1、创建套接字—<em>socket</em> 处理地址和端口 2、套接字绑定本地的地址和端口—bind 3、套接字设定监听状态(等待客服端消息)–listen 4、接受消息,返回一个用连接的新套接字 5、新套接字通信—read,write 6、关闭套接字—close #include &amp;amp;amp;lt;stdio.h...
NIO Socket服务端和客户端
声明:本文章仅基于个人粗略整理总结,如有不足之处,欢迎指出。 参考文章:NIO Socket编程实例、nio的简单传输例子、深入浅出NIO Socket实现机制、深入浅出NIO之Channel、Buffer ++++++++++++++++++++++++++ 上一篇:https://blog.csdn.net/u012767184/article/details/88762935 ni...
windows 程序设计 CHM版本下载
windows 程序设计 CHM版本 带源码 相关下载链接:[url=//download.csdn.net/download/lw82881630/3529256?utm_source=bbsseo]//download.csdn.net/download/lw82881630/3529256?utm_source=bbsseo[/url]
GSM数字蜂窝移动通信下载
中文名: GSM数字蜂窝移动通信 作者: 陈新图书分类: 网络 资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社书号: 7115053995发行时间: 1995年1月 地区: 大陆 语言: 简体中文 简介: 内容介绍: 本书系统介绍了GSM数字移动通信技术,讨论了完整的系统网络配置、硬件构成、软件结构、信令模型、空间接口、信道编码以及调制解调技术,编写中强调了系统性及实用性,突出有代表性的关键技术,本书可供移动通信主管部门、规划设计部门、研究部门、无线电管理部门的工程技术人员及大专院校师生参考。 内容截图: 目录: 第一章 概述 第二章 GSM数字移动 相关下载链接:[url=//download.csdn.net/download/huzhouhzy/4811561?utm_source=bbsseo]//download.csdn.net/download/huzhouhzy/4811561?utm_source=bbsseo[/url]
[硬盘文件快速搜索软件].Mythicsoft.FileLocator.Pro.v6.0.1235.Cracked-REViSE下载
[硬盘文件快速搜索软件].Mythicsoft.FileLocator.Pro.v6.0.1235.Cracked-REViSE 相关下载链接:[url=//download.csdn.net/download/u014746276/7492071?utm_source=bbsseo]//download.csdn.net/download/u014746276/7492071?utm_source=bbsseo[/url]
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件
我们是很有底线的