Windows 下socket編程示例

本身參考網上教程寫的,親測可用.備份一下源代碼,未來就不用重寫了.windows

注:在code::blocks下編譯時,要設置連接庫.具體方法爲:socket

菜單欄Settings->Compiler and debugger settings->Linker Settings->Add libws2_32.adebug

 

WinServ.c code

---server

/*This is a program to create a WinServer listening to 127.0.0.1:25340*/
#include <winsock2.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib,"ws2_32.lib")
int main(int argc, char* argv[]){教程

WSADATA wsa;
short port=25340;
char ServerIP[11]="127.0.0.1";
//初始化 socket
if(WSAStartup(MAKEWORD(2,2),&wsa)!=0){
  printf("Socket Init failed!\n");
  exit(-1);
}
//Create socket
SOCKET serverSocket;
if((serverSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET){
  printf("Socket Create failed!\n");
  exit(-1);
}
  struct sockaddr_in serverAddress;
  memset(&serverAddress,0,sizeof(struct sockaddr_in));
  serverAddress.sin_family=AF_INET;
  serverAddress.sin_addr.s_addr=inet_addr(ServerIP);
  serverAddress.sin_port=htons(port);it

  //bind
  if(bind(serverSocket,(struct sockaddr*)&serverAddress,sizeof(serverAddress))==SOCKET_ERROR){
   printf("Socket Bind Failed!\n");
   exit(-1);
  }
  //listen
  if(listen(serverSocket,SOMAXCONN)==SOCKET_ERROR){
   printf("Socket Listen Failed!\n");
   exit(-1);
  }io

  printf("Server is listening......ServerIP:%s port:%d\n",ServerIP,port);
  SOCKET clientSocket;
  struct sockaddr_in clientAddress;
  memset(&clientAddress,0,sizeof(clientAddress));
  int addrlen=sizeof(clientAddress);
  if((clientSocket=accept(serverSocket,(struct sockaddr*)&clientAddress,&addrlen))==INVALID_SOCKET){
   printf("Appect client conn failed\n");
   exit(-1);
  }
  else{
   printf("Get client connected from ClientIP %s Port:%d \n",inet_ntoa(clientAddress.sin_addr),ntohs(clientAddress.sin_port));
  }
  WSACleanup();
  return 0;
}
編譯

 

WinClient.ccli

指定了客戶端程序的源地址和源端口.

---

#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
int main(){
  WSADATA wsa;
short port=1257;
//初始化 socket
if(WSAStartup(MAKEWORD(2,2),&wsa)!=0){
  printf("Socket Init failed!\n");
  exit(-1);
}


SOCKET clientSocket;
  if((clientSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET){
  printf("Socket Create failed!\n");
  exit(-1);
}

struct sockaddr_in clientAddress;
  memset(&clientAddress,0,sizeof(struct sockaddr_in));
  clientAddress.sin_family=AF_INET;
  clientAddress.sin_addr.s_addr=inet_addr("127.0.0.1");
  clientAddress.sin_port=htons(port);


  struct sockaddr_in serverAddress;
  memset(&serverAddress,0,sizeof(struct sockaddr_in));
  serverAddress.sin_family=AF_INET;
  serverAddress.sin_addr.s_addr=inet_addr("127.0.0.1");
  serverAddress.sin_port=htons(25340);


    if(bind(clientSocket,(struct sockaddr*)&clientAddress,sizeof(clientAddress))==SOCKET_ERROR){
   printf("Socket Bind Failed!\n");
   exit(-1);
  }


if((connect(clientSocket,(struct sockaddr*)&serverAddress,sizeof(serverAddress)))==SOCKET_ERROR){
    printf("Connect Failed.\n");
    exit(-1);
    }

closesocket(clientSocket);
return 0;

}

相關文章
相關標籤/搜索