Windows 下socket编程示例

自己参考网上教程写的,亲测可用.备份一下源代码,将来就不用重写了.

注:在code::blocks下编译时,要设置链接库.具体方法为:

菜单栏Settings->Compiler and debugger settings->Linker Settings->Add libws2_32.a

 

WinServ.c

---

/*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);

  //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);
  }

  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.c

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

---

#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;

}

你可能感兴趣的:(Windows 下socket编程示例)