文档章节

SOCKET Server实例

种地瓜
 种地瓜
发布于 2016/05/13 17:02
字数 240
阅读 30
收藏 0
点赞 2
评论 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;
}

 

© 著作权归作者所有

共有 人打赏支持
种地瓜
粉丝 9
博文 174
码字总数 44807
作品 0
深圳
程序员
MySQL-----多实例配置

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

zack01
07/12
0
0
Iperf 源代码分析(四)

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

KiteRunner
2014/05/25
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
MYSQL数据库多实例的安装配置mysql_multi启停实战

一、多实例的应用场景: 1、资金紧张型公司的选择 当公司业务访问量不太大,又舍不得花钱,但同时又希望不同业务的数据库服务各自独立,而且需要主从同步进行等技术提供备份或读写分离服务时...

無言地对白
2016/11/15
0
0
TeamTalk源码分析(三) —— 服务器端的程序架构介绍

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

analogous_love
2017/05/10
0
0
HTML5的WebSocket

在HTML5规范中,我最喜欢的Web技术就是正迅速变得流行的WebSocket API。WebSocket提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。这个新的API提供了一个方法,从客户端使用...

沉淀岁月
2016/07/18
27
1
java socket 编程三步走

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

manlianman
2014/02/08
0
0
服务共享 vertx Server sharing

Server sharing 服务共享 When several HTTP servers listen on the same port, vert.x orchestrates the request handling using a round-robin strategy. 当几个http服务监听同一个端口,v......

天舒
2016/04/19
39
0
mysql5.6.40升级到mysql8.0.11 的步骤

环境: 操作系统: rhel7.5 目标: mysql 5.6.22升级到mysql 8.0.11 mysql5.6.40升级到mysql8.0.11,不能直接升级,如果直接升级8.0.11,启动会报以下不支持redo log format 错误: 2018-07-...

tututu_jiang
07/10
0
0
python模块介绍- SocketServer 网络服务框架

python模块介绍- SocketServer 网络服务框架 2013-05-22磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 博客:http://blog.csdn.net/oychw #版权所有,转载刊...

长平狐
2013/12/25
211
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Hbase增删查改工具类

package cn.hljmobile.tagcloud.service.data.repository;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util......

gulf
6分钟前
0
0
详解机器学习中的梯度消失、爆炸原因及其解决方法

前言 本文主要深入介绍深度学习中的梯度消失和梯度爆炸的问题以及解决方案。本文分为三部分,第一部分主要直观的介绍深度学习中为什么使用梯度更新,第二部分主要介绍深度学习中梯度消失及爆...

tantexian
7分钟前
0
0
JavaMail 发送邮件

参考 https://www.cnblogs.com/xdp-gacl/p/4216311.html 发送html格式邮件 package com.example.stumgr;import java.util.Properties;import javax.mail.Message;import javax.mail......

阿豪boy
9分钟前
0
0
Mongodb安装教程

MongoDB是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bso...

木筏笔歆
10分钟前
0
0
Hadoop之YARN命令

概述 YARN命令是调用bin/yarn脚本文件,如果运行yarn脚本没有带任何参数,则会打印yarn所有命令的描述。 使用: yarn [--config confdir] COMMAND [--loglevel loglevel] [GENERIC_OPTIONS] [...

舒运
11分钟前
0
0
个推数据统计产品(个数)iOS集成实践

最近业务方给我们部门提了新的需求,希望能一站式统计APP的几项重要数据。这次我们尝试使用的是个推(之前专门做消息推送的)旗下新推出的产品“个数·应用统计”,根据官方的说法,个推的数...

个推
12分钟前
0
0
Git 修改提交的用户名和邮箱名字

在通过git提交代码时,发现提交的用户名是自己mac的账户名,想要修改为其他名字和邮箱。 首先可以通过以下命令查看当前配置下的信息,包括用户名和邮箱: > git config --list 针对单项目的相...

edwardGe
15分钟前
0
0
Object.defineProperty()

Object.defineProperty(obj, props)方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象。 obj 在其上定义或修改属性的对象 props 要定义其可枚举属性或修改的属性描述符的对象 ...

litCabbage
16分钟前
0
0
JEESZ分布式框架--单点登录集成方案(三)

多项目集成单点登录配置 当sso验证完成之后,客户端系统需要接收sso系统返回的结果时,需要定义一个过滤器获取返回结果,然后针对返回结果做相关处理.如果不需要做处理时,此处Filter也可以不...

明理萝
17分钟前
0
1
超简单的利用plist 查看ipa包名及其它信息

1.下载ipa安装包 2.用rar等工具打开 3.将iTunesMetadata.plist文件解压出来 4.用http://www.atool.org/plist_reader.php在线反编译工具 5.在其中中找到softwareVersionBundleId 就是包名...

xiaogg
17分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部