18,356
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <WinSock2.h>
#define BUF_SIZE 1024
void ErrorHandling(char* message)
{
fputs(message,stderr);
fputs("\n",stderr);
exit(1);
}
int main(int argc,char* argv[])
{
WSADATA wsaData;
SOCKET hServerSock,hClientSock;
char message[BUF_SIZE];
int strLen;
if( argc != 2)
{
printf("Usage : %s <port>\n",argv[0]);
exit(1);
}
if(WSAStartup(MAKEWORD(2,2),&wsaData) != 0 )
ErrorHandling("WSAStartup() error");
hServerSock = socket(PF_INET,SOCK_STREAM,0);
if( hServerSock == INVALID_SOCKET)
ErrorHandling("socket() error");
SOCKADDR_IN servAdr,clntAdr;
int clntAdrSize = 0;
memset(&servAdr,0,sizeof(SOCKADDR_IN));
servAdr.sin_family = AF_INET;
servAdr.sin_addr.s_addr = htonl(INADDR_ANY);
servAdr.sin_port = htons(atoi(argv[1]));
if( bind(hServerSock,(SOCKADDR*)&servAdr,sizeof(servAdr)) == SOCKET_ERROR )
ErrorHandling("bind() error");
if( listen(hServerSock,5) == SOCKET_ERROR )
ErrorHandling("listen() error");
clntAdrSize = sizeof(clntAdr);
for( int i = 0;i < 5;i++ )
{
hClientSock = accept(hServerSock,(SOCKADDR*)&clntAdr,&clntAdrSize);
if( hClientSock == - 1 )
ErrorHandling("accept() error");
else
printf("Connected client %d \n",i + 1);
while( (strLen = recv(hClientSock,message,BUF_SIZE,0)) != 0 )
{
send( hClientSock,message,strLen,0);
}
closesocket(hClientSock);
}
closesocket(hServerSock);
WSACleanup();
return 0;
}
#include <stdio.h>
#include <winsock2.h>
#define BUF_SIZE 1024
void ErrorHandling(char* message);
int main(int argc,char* argv[])
{
WSADATA wsaData;
SOCKET hSocket;
char message[BUF_SIZE];
int strLen;
SOCKADDR_IN servAdr;
if( argc != 3 )
{
printf("Usage : %s <IP> <port>\n",argv[0]);
exit(1);
}
if( WSAStartup(MAKEWORD(2,2),&wsaData) != 0 )
ErrorHandling("WSAStartup() error");
hSocket = socket(PF_INET,SOCK_STREAM,0);
if( hSocket == INVALID_SOCKET)
ErrorHandling("socket() error");
memset(&servAdr,0,sizeof(servAdr));
servAdr.sin_family = AF_INET;
servAdr.sin_addr.s_addr = inet_addr(argv[1]);
servAdr.sin_port = htons(atoi(argv[2]));
//servAdr.sin_addr.s_addr = inet_addr("127.0.0.1");
//servAdr.sin_port = htons(atoi("6666"));
connect(hSocket,(SOCKADDR*)&servAdr,sizeof(servAdr));
if( connect(hSocket,(SOCKADDR*)&servAdr,sizeof(servAdr) == SOCKET_ERROR) )
{
DWORD lasterror = GetLastError();
ErrorHandling("connect() error");
}
puts("conntected.....");
while(true)
{
fputs("Input message(Q to quit): ",stdout);
fgets(message,BUF_SIZE,stdin);
if( !strcmp(message,"q\n") || !strcmp(message,"Q\n"))
break;
send(hSocket,message,strlen(message),0);
strLen = recv(hSocket,message,BUF_SIZE - 1,0);
message[strLen] = 0;
printf("Message from server: %s",message);
}
closesocket(hSocket);
WSACleanup();
return 0;
}
void ErrorHandling(char* message)
{
fputs(message,stderr);
fputs("\n",stderr);
exit(1);
}