zoukankan      html  css  js  c++  java
  • 【Socket规划】套接字Windows台C语言

    【编译环境】:Visual Studio 2013

    这是服务端实现流程。

    #include<stdio.h>
    #include<stdlib.h>
    #include<winsock2.h>
    
    #pragma comment(lib, "ws2_32.lib")
    
    const int BACK_LOG = 5;
    
    int main(int argc, char * argv[])
    {
    	//初始化套接字
    	WSADATA wsaData;
    	int ret = WSAStartup(MAKEWORD(2, 4), &wsaData);
    	if (0 != ret){
    		fputs("WSAStartup error
    ", stderr);
    		return 1;
    	}
    
    	//创建套接字
    	SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    	if (INVALID_SOCKET == sock) {
    		fputs("socket() error
    ", stderr);
    		WSACleanup();
    		return 1;
    	}
    
    	//绑定套接字
    	SOCKADDR_IN sockAddr;
    	memset(&sockAddr,0,sizeof(SOCKADDR_IN));
    	sockAddr.sin_family = AF_INET;//协议簇,一般用AF_INET表示TCP/IP协议
    	sockAddr.sin_addr.S_un.S_addr = htonl(ADDR_ANY);//表示IP地址
    	sockAddr.sin_port = htons(7);//表示端口
    
    	ret = bind(sock, (SOCKADDR*)&sockAddr, sizeof(sockAddr));
    	if (SOCKET_ERROR == ret) {
    		fputs("bind() error
    ", stderr);
    		closesocket(sock);
    		WSACleanup();
    		return 1;
    	}
    
    	//侦听套接字
    	ret = listen(sock, BACK_LOG);
    	if (SOCKET_ERROR == ret) {
    		fputs("listen() error
    ", stderr);
    		closesocket(sock);
    		WSACleanup();
    		return 1;
    	}
    
    	//接收套接字
    	SOCKADDR_IN clientAddr;
    	int szClientAddr = sizeof(clientAddr);
    
    	SOCKET clientSock = accept(sock, (SOCKADDR*)&clientAddr, &szClientAddr);
    
    	if (INVALID_SOCKET == clientSock){
    		fputs("accept() error
    ", stderr);
    		closesocket(sock);
    		WSACleanup();
    		return 1;
    	}
    
    	//收发数据
    	TCHAR buff[256];
    	memset(&buff,0,sizeof(buff));
    
    	recv(sock,buff,sizeof(buff),0);//recv()返回读入的字节数
    
    	TCHAR buff2[] = "QUIT
    ";
    	send(sock, buff2, sizeof(buff2), 0);//成功则返回实际传送出去的字符数
    
    	//回收资源
    	closesocket(sock);
    	closesocket(clientSock);
    	WSACleanup();
    	
    	return 0;
    
    }


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    机器人
    昨天拿钥匙了
    Linux挂NTFS格式USB硬盘
    漫游在首都
    RHEL+WAS6部署风波
    移动电话国内漫游通话费上限评估用户意见网上调查
    WebSphere fixes
    我太强悍了
    NO SUBJECT
    pku3617 Best Cow Line
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4798983.html
Copyright © 2011-2022 走看看