#include <conio.h>
#ifdef _WIN32
#define _SIZVERJY_WIN
#endif
#ifdef _SIZVERJY_WIN
#include <WinSock2.h>
#pragma comment(lib, "Ws2_32.lib") // Socket编程需用的动态链接库
#pragma comment(lib, "Kernel32.lib") // IOCP需要用到的动态链接库
class winsockinit
{
public:
winsockinit()
{
WORD wVersionRequested;
WSADATA wsaData;
int err, iLen;
wVersionRequested = MAKEWORD(2, 2);//create 16bit data
//(1)Load WinSock
err = WSAStartup(wVersionRequested, &wsaData); //load win socket
if (err != 0)
{
printf("Load WinSock Failed!\n");
throw -1;
}
}
~winsockinit()
{
WSACleanup();
}
};
#endif
#ifndef _SIZVERJY_WIN
#define SOCKET int
class winsockinit;
#endif
int sizver3netws(int argc, char * argv[])
{
return 0;
}
//#include<stdlib.h>
//#include<stdio.h>
//#include<errno.h>
//#include<string.h>
//#include<netdb.h>
//#include<sys/types.h>
//#include<netinet/in.h>
//#include<sys/socket.h>
//#include<unistd.h>
//#include<arpa/inet.h>
//
#define portnumber 8080
int example_tcp_server(int argc, char *argv[])
{
winsockinit wsa;
SOCKET sockfd, new_fd;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
int sin_size, iDataNum;
// const char hello[]="Hello cpp, you are success.\n";
char buffer[4096];
if (argc != 2)
{
fprintf(stderr, "Usage:%s portnumber\a\n", argv[0]);
return 0;
}
// if((portnumber=atoi(argv[1]))<0)
// {
// fprintf(stderr,"Usage:%s portnumber\a\n",argv[0]);
// return 0;
// }
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
fprintf(stderr, "Socket error:%s\n\a", strerror(errno));
return 0;
}
memset(&server_addr, 0, sizeof(struct sockaddr_in));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
server_addr.sin_port = htons(portnumber);
if (bind(sockfd, (struct sockaddr *)(&server_addr), sizeof(struct sockaddr)) == -1)
{
fprintf(stderr, "Bind error:%s\n\a", strerror(errno));
return 0;
}
if (listen(sockfd, 5) == -1)
{
fprintf(stderr, "Listen error:%s\n\a", strerror(errno));
return 0;
}
while (1)
{
sin_size = sizeof(struct sockaddr_in);
if ((new_fd = accept(sockfd, (struct sockaddr *)(&client_addr), &sin_size)) == -1)
{
fprintf(stderr, "Accept error:%s\n\a", strerror(errno));
return 0;
}
fprintf(stdout, "Server get connection from %s\n", inet_ntoa(client_addr.sin_addr));
iDataNum = recv(new_fd, buffer, 4096, 0);
if (iDataNum<0)
{
perror("Recv\n");
exit(1);
}
printf("Recv data is %s\n", buffer);
send(new_fd, buffer, sizeof(buffer), 0);
// if(write(new_fd,hello,strlen(hello))==-1)
// {
// fprintf(stderr,"write error:%s\n",strerror(errno));
// return 0;
// }
closesocket(new_fd);
}
closesocket(sockfd);
// exit(0);
return 0;
}