如何确定socket连接成功? c#socket异步连接后怎样判断连接是否成功

java\u4e2d\u600e\u4e48\u5224\u65adsocket\u662f\u5426\u8fde\u63a5\u6210\u529f

\u5de5\u7a0b\u91cc\u9047\u5230\u4e86\u9700\u8981\u5224\u65adSocket\u662f\u5426\u5df2\u7ecf\u5173\u95ed\u7684\u95ee\u9898\uff0c\u4f7f\u7528
public boolean isAlive(){ if(mSocket.equals(null)||mSocket.isClosed()||!mSocket.isConnected()||mSocket.isInputShutdown()||mSocket.isOutputShutdown()){ MyLog.d("mSocket.isConnected()"+mSocket.isConnected()); return false; }else{ MyLog.d("mSocket.isConnected()"+mSocket.isConnected()); return true; } } \u6beb\u65e0\u4f5c\u7528\uff0c\u968f\u540e\u67e5\u770b\u4e86\u7f51\u4e0a\u5148\u5173\u89e3\u51b3\u529e\u6cd5\uff0c\u53d1\u73b0Socket\u4e2d\u6709\u4e00\u4e2a\u65b9\u6cd5void sendUrgentData(0xFF)\u5f53\u5bf9\u65b9SO_OOBINLINE\u5c5e\u6027\u6ca1\u6709\u6253\u5f00\u65f6\uff0c\u5c31\u4f1a\u81ea\u52a8\u820d\u5f03\u8fd9\u4e2a\u5b57\u8282\uff0c\u800cSO_OOBINLINE\u5c5e\u6027\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u5c31\u662f\u5173\u95ed\u7684\uff0c\u4f46\u662f\u53ea\u8981\u80fd\u591f\u53d1\u9001\u5230\u5bf9\u65b9Socket\uff0csendUrgentData(0xFF)\u65b9\u6cd5\u5c31\u4e0d\u4f1a\u62a5\u9519\uff0c\u53ea\u8981catch\u4e00\u4e0bIOException\u5c31OK\u4e86\uff0c\u5f53\u5bf9\u65b9\u5173\u6389\u4e86Socket\u4e4b\u540e\u5c31\u4f1a\u8fdb\u5165catch\uff0c\u95ee\u9898\u8fce\u5203\u800c\u89e3\u3002
try{ mSocket.sendUrgentData(0xFF); }catch(IOException e){ Log.d(e+":\u8981\u5173\u6389\u4e86\u963f \uff01"); mSocket.close(); } \u5f53socket\u65ad\u6389\u4e4b\u540e\uff0c\u629b\u51fajava.net.socketexception broken pipe\u5f02\u5e38\uff0c\u6ca1\u6709\u95ee\u9898\u3002

//\u8fd9\u662f\u4f8b\u5b50\uff0c\u4f60\u53c2\u8003\u53c2\u8003private int connToServer(string hostip, int hostport,int ctimeout) { IPEndPoint remoteEp = new IPEndPoint(IPAddress.Parse(hostip),hostport); try { connDone.Reset(); //\u5f00\u59cb\u8fde\u63a5 cliSock.BeginConnect(remoteEp, new AsyncCallback(connCallBack), cliSock); connDone.WaitOne(ctimeout, false); if (!cliSock.Connected) { //\u8fde\u63a5\u8d85\u65f6 return CONNTIMEOUT; } //\u8fde\u63a5\u6210\u529f return 0; } catch (SocketException ex) { //\u8fde\u63a5\u5931\u8d25 cliSock.Close(); return CONNTIMEOUT; } catch (Exception ex) { //\u8fde\u63a5\u5931\u8d25 cliSock.Close(); return CONNTIMEOUT; } } private void connCallBack(IAsyncResult ar) { Socket s = (Socket)ar.AsyncState; try { s.EndConnect(ar); isConnected = s.Connected; } catch (Exception ex) { isConnected = false; //\u53d1\u751f\u9519\u8bef return; } finally { connDone.Set(); } }

TCP的我不是很了解,大致是先绑定客户端套接字,设置好服务器端socket后使用connect函数连接,如果返回0就说明连接成功

服务器SOCKET accept(
SOCKET s,
struct sockaddr* addr,
int* addrlen
);
成功返回SOCKET失败返回INVALID_SOCKET
客户端
int connect(
SOCKET s,
const struct sockaddr* name,
int namelen
);
成功返回zero失败返回SOCKET_ERROR

用QQ登陆设置---代理设置---测试

连接通常是调用connect函数,connect函数返回0表示连接成功,返回-1表示出错,同时该函数还影响errno,比如如果连接超时connect返回-1,同时置errno为etimedout.

  • 濡備綍纭畾socket杩炴帴鎴愬姛?
    绛旓細TCP鐨勬垜涓嶆槸寰堜簡瑙,澶ц嚧鏄厛缁戝畾瀹㈡埛绔鎺ュ瓧,璁剧疆濂芥湇鍔″櫒绔痵ocket鍚庝娇鐢╟onnect鍑芥暟杩炴帴,濡傛灉杩斿洖0灏辫鏄庤繛鎺ユ垚鍔
  • 濡備綍鏉鍒ゆ柇涓涓Socket鏄惁鏄缓绔嬪ソ杩炴帴鐨,杩樻槸娌℃湁寤虹珛杩炴帴鐨
    绛旓細鐢╯elect娴嬭瘯鍙啓灏辫鏄庤繛鎺ュソ浜 鏅曪紝浣犲湪瀛ocket鐨勬椂鍊欓毦閬撴病鏈夌湅鍚楋紝鍦ㄦ湇鍔$鍒ゆ柇鏄惁杩炴帴锛屾槸鐪媋ccept鐨勮繑鍥炲硷紝鑰屽鎴风鐨勮瘽鏄湅connect鐨勮繑鍥炲硷紝濡傛灉2涓繑鍥炲奸兘涓嶆姤閿欙紝褰撶劧灏辫繛鎺ヤ笂浜嗭紝鎴戣杩欎簺鏄缓绔嬪湪浣犲凡缁忓熀鏈簡瑙ocket鍗忚鐨勫熀纭涓婄殑銆俫etsockopt( AcceptSocket , SOL_SOCKET , 0x...
  • 濡備綍鍒ゆ柇SOCKET杩樻槸杩炴帴鐫鐨
    绛旓細鍙笉鍙互鍦–lient璁句竴涓畾鏃跺櫒锛屾瘡闅斾竴娈垫椂闂村彂涓鏉℃秷鎭粰鏈嶅姟鍣紝鐪嬭兘涓嶈兘鏀跺埌鏈嶅姟鍣ㄧ殑鍝嶅簲銆傚績璺冲寘灏辨槸瀹氭椂鍙戝寘锛屾病鍥炲簲灏鍒ゆ柇鏂紑銆3. getsockopt int optval, optlen = sizeof(int);getsockopt(sd, SOL_SOCKET, SO_ERROR,(char*) &optval, &optlen);switch(optval){ case 0://鈥滃浜杩...
  • c#socket寮傛杩炴帴鍚鎬庢牱鍒ゆ柇杩炴帴鏄惁鎴愬姛
    绛旓細//杩欐槸渚嬪瓙锛屼綘鍙傝冨弬鑰僷rivate int connToServer(string hostip, int hostport,int ctimeout) { IPEndPoint remoteEp = new IPEndPoint(IPAddress.Parse(hostip),hostport); try { connDone.Reset(); //寮濮杩炴帴 cliSock.BeginConnect(remoteEp, new AsyncCallback(connCall...
  • 鎬庢牱鍒ゆ柇socket杩炴帴鎴愬姛
    绛旓細socket寤虹珛杩炴帴澶辫触浼氭姏鍑哄紓甯革紝浣犲彧闇瑕佸湪catch閲屾崟鎹夊紓甯稿氨鍙互浜哻atch(exceptione){System.out.println("鏈嶅姟鍣/瀹㈡埛绔湭杩炴帴");return;}
  • 寮傛杩炴帴鏃,鍒ゆ柇鏄惁杩炴帴鎴愬姛
    绛旓細寮傛杩炴帴杩囩▼锛1. socket2. set non-block3. ret = connect4. if ret == 0 register to Reactor5. elseconnected failed 6. ConnectHandler涓細Reactor鎺ユ敹鍒皐ritable浜嬩欢锛屼細鍥炶皟WriteHandler浣嗘槸锛屽鏋滆繙绋嬫湇鍔$鍙o紝鏍规湰娌℃湁璧锋潵鏃讹紝Reactor杩樻槸浼歐ritable鎵浠ヨ繕闇瑕佸叾浠栨満鍒鍒ゆ柇鏄惁鐪熺殑Connected鍥犳锛...
  • app Socket鏄鎬庝箞杩炴帴鐨勫憿?
    绛旓細濡傛灉鎮ㄧ殑鎵嬫満搴旂敤Socket鏈杩炴帴锛屽彲鑳芥槸鐢变簬浠ヤ笅鍘熷洜锛1. 缃戠粶杩炴帴闂锛氭墜鏈哄簲鐢ㄦ棤娉曡繛鎺ュ埌鏈嶅姟鍣紝鍙兘鏄敱浜庣綉缁滆繛鎺ラ棶棰橈紝渚嬪鎮ㄧ殑鎵嬫満娌℃湁鑱旂綉鎴栬呯綉缁滀笉绋冲畾绛夊師鍥犮2. 鏈嶅姟鍣ㄨ繛鎺ラ棶棰橈細鏈嶅姟鍣ㄧ鏈鎴愬姛寮鍚垨鑰呮湭姝e父杩愯锛屽鑷存棤娉曚笌瀹㈡埛绔缓绔嬭繛鎺ャ3. 绔彛鍙锋垨IP鍦板潃璁剧疆閿欒锛氬鏋滄偍鐨勫簲鐢ㄨ繛鎺ヤ笉鍒...
  • 鎵嬫満搴旂敤Socket鏈杩炴帴鎬庝箞鍔?
    绛旓細1. 缃戠粶闂锛氳纭繚浣犵殑鎵嬫満宸茶繛鎺ュ埌鍙敤鐨勭綉缁滐紝骞朵笖缃戠粶杩炴帴姝e父銆備綘鍙互灏濊瘯鍒囨崲鍒板叾浠栫綉缁滄垨閲嶆柊杩炴帴缃戠粶銆2. 鏈嶅姟鍣ㄩ棶棰橈細濡傛灉搴旂敤绋嬪簭灏濊瘯杩炴帴鐨勬湇鍔″櫒鍑虹幇闂锛屽彲鑳戒細瀵艰嚧 Socket 杩炴帴澶辫触銆備綘鍙互灏濊瘯妫鏌ユ湇鍔″櫒鐘舵佹垨鑱旂郴搴旂敤绋嬪簭鐨勫紑鍙戣呬互鑾峰彇甯姪銆3. 搴旂敤绋嬪簭闂锛氬簲鐢ㄧ▼搴忔湰韬彲鑳藉瓨鍦ㄩ棶棰橈紝...
  • c#濡備綍鍒ゆ柇socket杩炴帴ip鏄繛鎺ョ殑
    绛旓細浣犲彲浠ョ敤涓涓暟缁勬潵淇濆瓨鍚勪釜宸茬粡杩炴帴鐨刢lientIP锛屽湪鎺ュ彈杩炴帴鏃惰繘琛鍒ゆ柇锛屽鏋滆繖涓狪P宸茬粡杩炴帴浜嗭紝鍒欐嫆缁濇帴鍙楄繛鎺ャ傛嫆缁濇帴鍙楄繛鎺ョ殑鏂规硶锛歩f (HaveBeenAccpeted(clientIP)) // 濡傛灉杩欎釜IP宸茬粡杩炴帴浜唟NetworkStream networkStream = client.GetStream();networkStream.Close(); // 椹笂鏂紑杩欎釜TCP杩炴帴 ...
  • LINUX涓鍒ゆ柇socket杩炴帴鐘舵濡備綍鍘诲垽鏂?鏈夌幇鎴愬嚱鏁板悧
    绛旓細getsockopt() ,璇ュ嚱鏁扮敤浜庤幏鍙栦换鎰忕被鍨嬨佷换鎰忕姸鎬佸鎺ュ彛鐨勯夐」褰撳墠鍊硷紝骞舵妸缁撴灉瀛樺叆optval銆
  • 扩展阅读:socket外挂连接器 ... socket连接不成功 ... socket连接器下载手机 ... socket未连接怎么办 ... 苹果手机socket未连接 ... socket error ... cpu socket ... python中如何安装socket ... 建立socket连接 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网