Cfree windows c語言 socket

來源:互聯網
上載者:User

標籤:參數   ret   info   char   nec   accept   tla   本地   invalid   

server.c
#include <stdio.h>#include <winsock2.h>#include <winsock2.h>#define SERVER_PORT 5208 //偵聽連接埠int main(){    WORD wVersionRequested;    WSADATA wsaData;    int ret, nLeft, length;    SOCKET sListen, sServer; //偵聽通訊端,串連通訊端    struct sockaddr_in saServer, saClient; //地址資訊       char *ptr;//用於遍曆資訊的指標       //WinSock初始化    wVersionRequested=MAKEWORD(2, 2); //希望使用的WinSock DLL 的版本    ret=WSAStartup(wVersionRequested, &wsaData);    if(ret!=0)    {        printf("WSAStartup() failed!\n");        return;    }    //建立Socket,使用TCP協議    sListen=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);    if (sListen == INVALID_SOCKET)    {        WSACleanup();        printf("socket() faild!\n");        return;    }    //構建本地地址資訊    saServer.sin_family = AF_INET; //地址家族    saServer.sin_port = htons(SERVER_PORT); //注意轉化為網路位元組序    saServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //使用INADDR_ANY 指示任意地址      //綁定    ret = bind(sListen, (struct sockaddr *)&saServer, sizeof(saServer));    if (ret == SOCKET_ERROR)    {        printf("bind() faild! code:%d\n", WSAGetLastError());        closesocket(sListen); //關閉通訊端        WSACleanup();        return;    }      //偵聽串連請求    ret = listen(sListen, 5);    if (ret == SOCKET_ERROR)    {        printf("listen() faild! code:%d\n", WSAGetLastError());        closesocket(sListen); //關閉通訊端        return;    }      printf("Waiting for client connecting!\n");    printf("Tips: Ctrl+c to quit!\n");    //阻塞等待接受用戶端串連 while(1)//迴圈監聽用戶端,永遠不停止,所以,在本項目中,我們沒有心跳包。 {  length = sizeof(saClient);  sServer = accept(sListen, (struct sockaddr *)&saClient, &length);  if (sServer == INVALID_SOCKET)  {   printf("accept() faild! code:%d\n", WSAGetLastError());   closesocket(sListen); //關閉通訊端   WSACleanup();   return;  }         char receiveMessage[5000];   nLeft = sizeof(receiveMessage);  ptr = (char *)&receiveMessage;  while(nLeft>0)  {   //接收資料   ret = recv(sServer, ptr, 5000, 0);   if (ret == SOCKET_ERROR)   {    printf("recv() failed!\n");    return;   }   if (ret == 0) //用戶端已經關閉串連   {    printf("Client has closed the connection\n");    break;   }   nLeft -= ret;   ptr += ret;  }      printf("receive message:%s\n", receiveMessage);//列印我們接收到的訊息。  }   //  closesocket(sListen);  //  closesocket(sServer);  //  WSACleanup();  return 0;}
client.c
#include <stdio.h>#include <stdlib.h>#include <winsock2.h>#define SERVER_PORT 5208 //偵聽連接埠int main(){   WORD wVersionRequested;   WSADATA wsaData;   int ret;   SOCKET sClient; //串連通訊端   struct sockaddr_in saServer; //地址資訊   char *ptr;   BOOL fSuccess = TRUE;   //WinSock初始化   wVersionRequested = MAKEWORD(2, 2); //希望使用的WinSock DLL的版本   ret = WSAStartup(wVersionRequested, &wsaData);   if(ret!=0)   {        printf("WSAStartup() failed!\n");        return;   }   //確認WinSock DLL支援版本2.2   if(LOBYTE(wsaData.wVersion)!=2 || HIBYTE(wsaData.wVersion)!=2)   {        WSACleanup();        printf("Invalid WinSock version!\n");        return;   }   //建立Socket,使用TCP協議   sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);   if (sClient == INVALID_SOCKET)   {        WSACleanup();        printf("socket() failed!\n");        return;   }   //構建伺服器位址資訊   saServer.sin_family = AF_INET; //地址家族   saServer.sin_port = htons(SERVER_PORT); //注意轉化為網路節序   saServer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");   //串連伺服器   ret = connect(sClient, (struct sockaddr *)&saServer, sizeof(saServer));   if (ret == SOCKET_ERROR)   {        printf("connect() failed!\n");        closesocket(sClient); //關閉通訊端        WSACleanup();        return;   }      char sendMessage[]="hello this is client message!";    ret = send (sClient, (char *)&sendMessage, sizeof(sendMessage), 0);   if (ret == SOCKET_ERROR)   {        printf("send() failed!\n");   }   else        printf("client info has been sent!");   closesocket(sClient); //關閉通訊端   WSACleanup();   return 0;}
Cfree的配置

構建>構建選項>串連>參數

-lws2_32

 參考

windows下用c實現Socket通訊_Hope_新浪部落格
http://blog.sina.com.cn/s/blog_49f485700100mkjk.html

Cfree windows c語言 socket

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.