一江春水向東流

          做一個有思想的人,期待與每一位熱愛思考的人交流,您的關注是對我最大的支持。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            44 隨筆 :: 139 文章 :: 81 評論 :: 0 Trackbacks

          借此地方整理以下socket編程的多種語言的實現,socket可以跨平臺的通信,因此多語言、多平臺下的實現有必要了解的。代碼都是源自網上,感謝網友的分享。

          socket編程在windows下的C語言實現,dev C++下編譯通過
          編譯時設置編譯選項 工具-->編譯選項-->編譯器,勾選在連接器命令行加入以下命令,在對話框中填-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 閱讀(1153) 評論(0)  編輯  收藏 所屬分類: C/C++TCP/IP 開發win32
          主站蜘蛛池模板: 崇左市| 宁蒗| 长兴县| 门头沟区| 岳普湖县| 盐源县| 抚州市| 喜德县| 二连浩特市| 定边县| 中宁县| 景宁| 西安市| 贡山| 姚安县| 丁青县| 昌宁县| 冷水江市| 武隆县| 永州市| 阳春市| 二连浩特市| 泊头市| 甘谷县| 南澳县| 顺义区| 滨州市| 搜索| 鄂州市| 桃园县| 上饶县| 雅江县| 平山县| 新巴尔虎左旗| 元江| 东辽县| 海宁市| 泰顺县| 惠东县| 平顶山市| 枝江市|