70,014
社区成员




#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#define PORT 1129
#define ADDRESS "127.0.0.1"
#define true 1
#pragma comment (lib,"ws2_32")
WINSOCK_API_LINKAGE int PASCAL WSAStartup(WORD,LPWSADATA);
int main()
{
char press[20];
scanf("%s",press);
if(press[0]=='1')
{
WSADATA wsaData;
WORD sockVersion=MAKEWORD(2,2);
if(WSAStartup(sockVersion,&wsaData)!=0)
return 0;
SOCKET sSever=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(sSever==INVALID_SOCKET)
{
printf("socket error\n");
return 0;
}
SOCKADDR_IN sin;
sin.sin_family=AF_INET;
sin.sin_port=htons(1129);
sin.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(sSever,(LPSOCKADDR)&sin,sizeof(sin))==SOCKET_ERROR)
{
printf("bind error!\n");
return 0;
}
if(listen(sSever,5)==SOCKET_ERROR)
{
printf("listen error!\n");
closesocket(sSever);
return 0;
}
//sockaddr_in remoteAddr;
SOCKADDR_IN remoteAddr;
SOCKET sClient;
int nAddrlen=sizeof(SOCKADDR_IN);
char revData[255];
while(1)
{
sClient=accept(sSever,(SOCKADDR*)&remoteAddr,&nAddrlen);
if(sClient==INVALID_SOCKET)
{
printf("accpet error.\n");
continue;
}
printf("accept the connect from %s",inet_ntoa(remoteAddr.sin_addr));
while(true)
{
int ret=recv(sClient,revData,255,0);
if(ret==0||(ret==SOCKET_ERROR&& WSAGetLastError()==WSAECONNRESET))
{
printf("%s close the connect\n",inet_ntoa(remoteAddr.sin_addr));
closesocket(sClient);
break;
}
else
{
revData[ret]='\0';
printf("%s",revData);
}
}
}
closesocket(sSever);
WSACleanup();
}
if(press[0]=='1')
{
WSADATA wsaData;
WORD sockVersion=MAKEWORD(2,2);
if(WSAStartup(sockVersion,&wsaData)!=0)
return 0;
SOCKET sClient = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(sClient==INVALID_SOCKET)
{
printf("client socket error.\n");
return 0;
}
SOCKADDR_IN remote;
remote.sin_family=AF_INET;
remote.sin_port=htons(1129);
remote.sin_addr.s_addr=inet_addr(ADDRESS);
if(connect(sClient,(SOCKADDR*)&remote,sizeof(SOCKADDR))==SOCKET_ERROR)
{
printf("client connection error\n");
closesocket(sClient);
return 0;
}
while(true)
{
char SendData[255];
int i,ch;
for(i=0;(i<254)&&((ch=getchar())!=EOF)&&(ch!='\n');i++)
SendData[i]=(char)ch;
SendData[i]='\n';
SendData[i+1]='\0';
send(sClient,SendData,i+2,0);
}
closesocket(sClient);
WSACleanup();
return 0;
}
return 0;
}