¥µ¡¼¥Ð¥×¥í¥°¥é¥à¤È¥¯¥é¥¤¥¢¥ó¥È¥×¥í¥°¥é¥à¡¢¥»¥Ã¥È¤ÇÆ°¤¤Þ¤¹ ÂèÆó²ó¤Ï¥¯¥é¥¤¥¢¥ó¥È¥×¥í¥°¥é¥à¤ÎÀâÌÀ¤Ë¤Ê¤ê¤Þ¤¹ ¤Þ¤º¡¢¥¯¥é¥¤¥¢¥ó¥È¥×¥í¥°¥é¥à¤Î¼ê½ç¤ò¼¨¤·¤Þ¤¹ ¡WSAStartup WinSock¥é¥¤¥Ö¥é¥ê½àÈ÷ ¢socket ¥½¥±¥Ã¥ÈºîÀ® £connect ¥µ¡¼¥Ð¤ËÀܳ ¤recv,send ¥Ç¡¼¥¿Á÷¼õ¿®¡Ê·«¤êÊÖ¤·¡Ë ¥closesocket ¥½¥±¥Ã¥È¤òÊĤ¸¤ë ¦WSACleanup WinSock¥é¥¤¥Ö¥é¥ê¸å½èÍý ¡¡Á¢¡¢¤¡Á¦¤Ï¥µ¡¼¥Ð¦¤ÈƱ¤¸¤Ç¤¹ ¢¡¢£¤Ç¤¹¡ÊConnect¥á¥½¥Ã¥É¡Ë // Àܳ bool CClient::Connect(const char* IP,u_short PORT) { // sockaddr_in ¹½Â¤ÂΤΥ»¥Ã¥È struct sockaddr_in dstAddr; memset(&dstAddr, 0, sizeof(dstAddr)); dstAddr.sin_port = htons(PORT); dstAddr.sin_family = AF_INET; dstAddr.sin_addr.s_addr = inet_addr(IP); // ¥½¥±¥Ã¥È¤ÎÀ¸À® m_DstSocket = socket(AF_INET, SOCK_STREAM, 0); // Àܳ if(connect(m_DstSocket, (struct sockaddr *) &dstAddr, sizeof(dstAddr)) == SOCKET_ERROR){ return false; } // ¥½¥±¥Ã¥È¤òÈóƱ´ü¥â¡¼¥É¤Ë¤¹¤ë u_long val=1; ioctlsocket(m_DstSocket, FIONBIO, &val); return true; } ¤Þ¤ºsockaddr_in¹½Â¤ÂΤòºî¤ê¤Þ¤¹ dstAddr.sin_port = htons(PORT); ¤³¤Î¤È¤PORT°ú¿ô¤ËÆþ¤ë¥Ý¡¼¥ÈÈÖ¹æ¤Ï¥µ¡¼¥Ð¦¤Î¥Ý¡¼¥ÈÈÖ¹æ¤È¹ç¤ï¤»¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó dstAddr.sin_addr.s_addr = inet_addr(IP); IP°ú¿ô¤Ë¤ÏIP¥¢¥É¥ì¥¹¤Îʸ»úÎó¤ò»ØÄꤷ¤Þ¤¹ ¢¤Çsocket´Ø¿ô¤Ç¤Î¥½¥±¥Ã¥È¤ÎºîÀ®ÊýË¡¤Ï¥µ¡¼¥Ð¦¤ÈƱ¤¸¤Ç¤¹ u_long val=1; ioctlsocket(m_DstSocket, FIONBIO, &val); ÈóƱ´ü²½¤·¤¿¥½¥±¥Ã¥È¤ò¥Ç¡¼¥¿¤ÎÁ÷¼õ¿®¤Ë»È¤¤¤Þ¤¹
|