0x00 环境和编辑工具
linux os:ubuntu 16.04
editer:vim
编译工具:g++
0x01 代码实现
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <error.h>
#include <netinet/in.h>
using namespace std;
#define ErrFlag -1
#define ShowErrMsg(msg)\
do{perror(msg); exit(-1);} while(0);
int main(int argc, char* argv[])
{
int fd = socket(AF_INET, SOCK_STREAM, 0);
int retValue = 0;
int listenNums = 25;
if(ErrFlag == fd)
{
ShowErrMsg("socket!");
exit(-1);
}
struct sockaddr_in serverDefine;
serverDefine.sin_port = htons(19999);
serverDefine.sin_family = AF_INET;
retValue = bind(fd,(struct sockaddr*)&serverDefine, sizeof(struct sockaddr));
if(ErrFlag == retValue)
{
ShowErrMsg("bind");
exit(-1);
}
retValue = listen(fd, listenNums);
if(ErrFlag == retValue)
{
ShowErrMsg("listen");
exit(-1);
}
//阻塞点
int newFd = accept(fd, NULL, NULL);
if(ErrFlag == newFd)
{
ShowErrMsg("accept");
exit(-1);
}
char getClientMsg[1024];
//阻塞点
read(newFd, getClientMsg, sizeof(getClientMsg));
return 0;
}