文档章节

SOCKET Server实例

种地瓜
 种地瓜
发布于 2016/05/13 17:02
字数 240
阅读 30
收藏 0

// PigServer.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include "process.h"
#include <Windows.h>
#include <WinSock2.h>
using namespace std;
#pragma comment(lib,"ws2_32.lib")

 

//接受数据
void receive(PVOID param)
{
    SOCKET sock = *((SOCKET*)param);
    char buf[2048] = { 0 };

    int bytes;
    while (1)
    {
        if (SOCKET_ERROR == (bytes = recv(sock, buf, sizeof(buf), 0)))        //rev
        {
            _endthread();
            return;
        }

    }
}

//接受的线程
void ReceiveConnectThread(void *param)
{
    SOCKET socketServer = *((SOCKET*)param);
    while (1)//不断接受来自Client的数据
    {
        SOCKET clientSocket;    //Receive the client
        sockaddr_in clientAddress;
        memset(&clientAddress, 0, sizeof(clientAddress));
        int addrLen = sizeof(clientAddress);

        if (INVALID_SOCKET == (clientSocket = accept(socketServer, (sockaddr*)&clientAddress, &addrLen)))
        {
            cout << "Receive The Client Failure!" << endl;
            return ;
        }
        _beginthread(receive, 0, &clientSocket);
    }
}

//开始服务
SOCKET StartServer()
{
    SOCKET serverSocket;//Inintiate
    //Create Failure
    if (INVALID_SOCKET == (serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)))
    {
        cout << "Create Socket Error!" << endl;
        return 0;
    }

    //Create Success
    sockaddr_in serverAddress;
    memset(&serverAddress,0,sizeof(sockaddr_in));
    serverAddress.sin_family = AF_INET;
    serverAddress.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
    serverAddress.sin_port = htons(9224);

    //bind
    if (SOCKET_ERROR == (bind(serverSocket, (sockaddr*)&serverAddress, sizeof(serverAddress))))
    {
        cout << "socket bind error" << endl;
        return 0;
    }
    
    //listen
    if (SOCKET_ERROR == (listen(serverSocket, SOMAXCONN)))
    {
        cout << "Listern Erroe!" << endl;
        return 0;
    }
    return serverSocket;
}

//main
int _tmain(int argc, _TCHAR* argv[])
{
    WSADATA wsa;
    if (0 != WSAStartup(MAKEWORD(2, 2), &wsa))
    {
        cout << "Init Sockt Error!" << endl;
        return -1;
    }

    SOCKET sockt=StartServer();

    _beginthread(ReceiveConnectThread, 0, &sockt);

    system("pause");

    return 0;
}

 

© 著作权归作者所有

共有 人打赏支持
上一篇: Hash表
下一篇: MFC error MSB8031
种地瓜
粉丝 9
博文 177
码字总数 45450
作品 0
深圳
程序员
私信 提问
Iperf 源代码分析(四)

Socket 类 Socket的定义和实现分别在文件Socket.hpp和 Socket.cpp中。它的主要功能是封装了socket文件描述符、此socket对应的端口号,以及socket接口中的listen, accept, connect和close等函...

KiteRunner
2014/05/25
0
0
MySQL-----多实例配置

1.1 MySQL实例---多实例配置 1.1.1 多实例概述 多套后台进程+线程+内存结构 多个端口,多个配置文件,多个日志文件,多个socket,多个server_id 多套数据 ##PS:安装多实例前,首先确保MySQL...

zack01
2018/07/12
0
0
android ssl验证、https验证

Keytool工具的使用。 在用Android平台上使用SSL,第一步就是生成证书。 1、证书的生成 1.1生成服务器端的证书py keytool -genkey -alias test -keystore test.jks 1.2 将keystore中的cert导出...

ViceCode
2014/02/10
0
0
java socket 编程三步走

第一步 充分理解Socket   1.什么是socket   所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。  ...

manlianman
2014/02/08
0
0
TeamTalk源码分析(三) —— 服务器端的程序架构介绍

通过上一节的编译与部署,我们会得到TeamTalk服务器端以下部署程序: dbproxyserver file_server httpmsgserver login_server msfs msg_server push_server router_server 这些服务构成的拓扑...

analogous_love
2017/05/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

远程获得的有趣的linux命令

使用这些工具从远程了解天气、阅读资料等。 我们即将结束为期 24 天的 Linux 命令行玩具日历。希望你有一直在看,如果没有,请回到开始,从头看过来。你会发现 Linux 终端有很多游戏、消遣和...

Linux就该这么学
27分钟前
4
0
Apollo配置详细步骤(Windows环境)

一. 准备工作 1.下载 apollo 安装包 下载链接:http://activemq.apache.org/apollo/download.html 2.下载 java JDK 安装包 ( apollo 依赖 java 环境) 下载链接:http://www.oracle.com/techn......

morpheusWB
48分钟前
5
0
聊聊flink的AsyncWaitOperator

序 本文主要研究一下flink的AsyncWaitOperator AsyncWaitOperator flink-streaming-java_2.11-1.7.0-sources.jar!/org/apache/flink/streaming/api/operators/async/AsyncWaitOperator.java ......

go4it
今天
5
0
Java并发编程基础(四)

ThreadGroup 在主线程创建得线程,如果没有给他指定线程组,那么创建的线程,默认和主线程同一个线程组。线程组可以底下可以是线程,也可以实线程组。 构建线程组的方法: private ThreadGr...

chendom
今天
7
0
Scala学习(一)

学习Spark之前需要学习Scala。 参考学习的书籍:快学Scala

柠檬果过
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部