#include <winsock2.h>
#include <process.h>
#include <iostream>
#pragma comment(lib, "ws2_32.lib")
#include <list>
using namespace std;
std::list<SOCKET> client_list;
char szMsg[0x1000] = "";
int acceptData;
char sendData;
void addchar(char a[], char b[], int n)
{
int j = n;
for (int i = 0; i < strlen(a); i++)
{
b[j] = a[i];
j++;
}
b[j] = '\0';
}
int main()
{
WSADATA wsadata;
WSAStartup(0x22, &wsadata);
unsigned short sPort = 5678;
int sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
sockaddr_in saddr;
saddr.sin_addr.s_addr = ADDR_ANY;
saddr.sin_port = htons(sPort);
saddr.sin_family = AF_INET;
bind(sockfd, (const sockaddr*)(&saddr), sizeof(saddr));
listen(sockfd, 3);
cout << "waiting for client to connect, port:5678......" << endl;
sockaddr_in caddr;
int caddr_len = sizeof(caddr);
int client = accept(sockfd, (sockaddr*)&caddr, &caddr_len);
unsigned char *pAddr = (unsigned char*)&caddr.sin_addr.s_addr;
cout << (int)pAddr[0] << "." << (int)pAddr[1] << "." << (int)pAddr[2] << "." << (int)pAddr[3]
<< ":" << (int)ntohs(caddr.sin_port) << "." << "coming" << endl;
getpeername(client, (sockaddr*)&caddr, &caddr_len);
for (;;)
{
sendData = cin.get();
addchar(&sendData, szMsg, 0);
cout << szMsg << endl;
send(client, szMsg, strlen(szMsg), 0);
}
while (1);
return 0;
}