Windows服務器端最簡單的例子了,看看吧。
//在555端口上監聽,接受一個傳入的連接,然後退出程序。
////////////////////////服務器端///////////////////////
#include <windows.h>
#include <stdio.h>
#pragma comment (lib, "WS2_32.lib")
#define DEFAULT_PORT 555
#define DEFAULT_BUFFER 8
int main(void){
//初始化
WSADATA wsd;
if(WSAStartup(MAKEWORD(2, 2), &wsd) != 0){
printf("WSAStartup error!/n");
return FALSE;
}
printf("WSAStartup初始化成功!/n");
SOCKET sSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
if(sSocket == SOCKET_ERROR){
printf("SOCKET ERROR!/n");
return FALSE;
}
printf("socket初始化成功!/n");
struct sockaddr_in local;
local.sin_addr.s_addr = htonl(INADDR_ANY);
local.sin_family = AF_INET;
local.sin_port = htons(DEFAULT_PORT);
//綁定
if(bind(sSocket, (struct sockaddr *)&local, sizeof(local)) == SOCKET_ERROR){
printf("綁定失敗!bind error!/n");
return FALSE;
}
printf("綁定成功!/n");
//監聽
if(listen(sSocket, 10) == SOCKET_ERROR){
printf("監聽失敗!listen error!/n");
return FALSE;
}
printf("監聽成功!/n");
printf("開始監聽.../n");
int naddrlen = sizeof(sockaddr_in);
//接受連接
SOCKET sClient = accept(sSocket, (struct sockaddr *)&local, (int *)&naddrlen);
if(sClient == SOCKET_ERROR){
printf("接受連接失敗!accept error!/n");
//printf("error = %d/n", WSAGetLastError());
return FALSE;
}
printf("接受連接成功!/n");
char cBuf[DEFAULT_BUFFER] = {'/0'};
if(recv(sClient, cBuf, DEFAULT_BUFFER, 0) == SOCKET_ERROR){
printf("接收數據失敗!recv error!/n");
//printf("cBuf[] = %s/n", cBuf);
return FALSE;
}
printf("接收數據成功!/n");
printf("cBuf[] = %s/n", cBuf);
printf("Press any key to exit .../n");
getchar();
//結束
closesocket(sSocket);
WSACleanup();
printf("結束!/n");
return TRUE;
}
/////////////////////////////eof//////////////////////////////////////
其客戶端程序參見“視窗:網路-(完成端口)-最簡示例(客戶端) ”。