一江春水向東流

          做一個(gè)有思想的人,期待與每一位熱愛(ài)思考的人交流,您的關(guān)注是對(duì)我最大的支持。

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            44 隨筆 :: 139 文章 :: 81 評(píng)論 :: 0 Trackbacks

          借此地方整理以下socket編程的多種語(yǔ)言的實(shí)現(xiàn),socket可以跨平臺(tái)的通信,因此多語(yǔ)言、多平臺(tái)下的實(shí)現(xiàn)有必要了解的。代碼都是源自網(wǎng)上,感謝網(wǎng)友的分享。

          socket編程在windows下的C語(yǔ)言實(shí)現(xiàn),dev C++下編譯通過(guò)
          編譯時(shí)設(shè)置編譯選項(xiàng) 工具-->編譯選項(xiàng)-->編譯器,勾選在連接器命令行加入以下命令,在對(duì)話框中填-lwsock32
          //server.c
          #include <stdio.h>
          #include <Winsock2.h>
          int main()
          {
          ??? WORD wVersionRequested;
          ??? WSADATA wsaData;
          ??? int err;
          ???
          ??? wVersionRequested = MAKEWORD( 1, 1 );
          ???
          ??? err = WSAStartup( wVersionRequested, &wsaData );
          ??? if ( err != 0 ) {
          ??????? return;
          ??? }
          ???
          ??? if ( LOBYTE( wsaData.wVersion ) != 1 ||
          ??? HIBYTE( wsaData.wVersion ) != 1 ) {
          ??????? WSACleanup();
          ??????? return;
          ??? }
          ??? SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
          ???
          ??? SOCKADDR_IN addrSrv;
          ??? addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
          ??? addrSrv.sin_family=AF_INET;
          ??? addrSrv.sin_port=htons(6000);
          ???
          ??? bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
          ???
          ??? listen(sockSrv,5);
          ???
          ??? SOCKADDR_IN addrClient;
          ??? int len=sizeof(SOCKADDR);
          ??? while(1)
          ??? {
          ??????? SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
          ??????? char sendBuf[50];
          ??????? sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));
          ??????? send(sockConn,sendBuf,strlen(sendBuf)+1,0);
          ??????? char recvBuf[50];
          ??????? recv(sockConn,recvBuf,50,0);
          ??????? printf("%s\n",recvBuf);
          ??????? closesocket(sockConn);
          ??? }
          }

          //客戶端代碼
          #include <stdio.h>
          #include <Winsock2.h>
          int main()
          {
          ??? WORD wVersionRequested;
          ??? WSADATA wsaData;
          ??? int err;
          ???
          ??? wVersionRequested = MAKEWORD( 1, 1 );
          ???
          ??? err = WSAStartup( wVersionRequested, &wsaData );
          ??? if ( err != 0 ) {
          ??????? return;
          ??? }
          ???
          ??? if ( LOBYTE( wsaData.wVersion ) != 1 ||
          ??????? HIBYTE( wsaData.wVersion ) != 1 ) {
          ??????? WSACleanup( );
          ??????? return;
          ??? }
          ??? SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
          ???
          ??? SOCKADDR_IN addrSrv;
          ??? addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
          ??? addrSrv.sin_family=AF_INET;
          ??? addrSrv.sin_port=htons(6000);
          ??? connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
          ??? send(sockClient,"hello",strlen("hello")+1,0);
          ??? char recvBuf[50];
          ??? recv(sockClient,recvBuf,50,0);
          ??? printf("%s\n",recvBuf);
          ??? closesocket(sockClient);
          ??? WSACleanup();
          }

          posted on 2009-04-03 22:34 allic 閱讀(1148) 評(píng)論(0)  編輯  收藏 所屬分類: C/C++TCP/IP 開(kāi)發(fā)win32
          主站蜘蛛池模板: 海安县| 神池县| 廊坊市| 西宁市| 白山市| 义乌市| 济源市| 高安市| 黑水县| 蕲春县| 宁波市| 陈巴尔虎旗| 芦山县| 永丰县| 河北区| 雅江县| 威宁| 新泰市| 崇信县| 樟树市| 唐河县| 河西区| 瑞金市| 泾川县| 崇信县| 女性| 漠河县| 府谷县| 民乐县| 钟祥市| 湘潭市| 廉江市| 淮阳县| 应城市| 安溪县| 宣化县| 商洛市| 岳西县| 社会| 洛川县| 林甸县|