这个是服务端
#include "stdafx.h"
#include <winsock.h>
#include <stdlib.h>
#include <stdio.h>
void usage(char *name)
{
fprintf(stderr,"usage:%s [port]/n",name);
}
int main(int argc, char* argv[])
{
SOCKET servsock,clisock;
struct sockaddr_in sa;
struct sockaddr_in cliaddr;
int len;
int err;
int servport=5555;
char buff[256];
SYSTEMTIME st;
WSADATA wsd;
printf("*****************************************/n");
printf("time server sample,writtern by muhuohaceker,/n");
printf("mail :muhuohacker@qq.com/n");
printf("*************");
if (argc>2)
{
usage(argv[0]);
return -1;
}
if (argc==2)
{
servport=atoi(argv[1]);
if (servsock>65535||servsock<1)
{
usage(argv[0]);
return -2;
}
}
if (WSAStartup(MAKEWORD(1,1),&wsd)!=0)
{
printf("没有初始化成功/n");
return -3;
}
printf("开始创建套接字/n");
servsock=socket(AF_INET,SOCK_STREAM,0);
if (servsock==INVALID_SOCKET)
{
fprintf(stderr,"socket() failed: %d/n",WSAGetLastError());
return -4;
}
printf("ok/n");
memset(&sa,0,sizeof(sa));
sa.sin_family=AF_INET;
sa.sin_port=htons(servport);
sa.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
printf("bind~~~~~~~~~~~~~/n");
err=bind(servsock,(const sockaddr *)&sa,sizeof(sa));
if (err!=0)
{
printf("绑定失败/n");
return -5;
}
printf("ok/n");
printf("listen ****");
err=listen(servsock,5);
if (err!=0)
{
fprintf(stderr,"listen() failed:%d/n",WSAGetLastError());
return -6;
}
printf("ok/n");
while (1)
{
printf("wait request....../n");
len=sizeof(cliaddr);
clisock=accept(servsock,(struct sockaddr *)&cliaddr,&len);
if (clisock==INVALID_SOCKET)
{
fprintf(stderr,"accept() failed: %d/n",WSAGetLastError());
closesocket(servsock);
return -7;
}
printf("accept client: %s:%d",inet_ntoa(cliaddr.sin_addr),ntohs
(cliaddr.sin_port));
GetLocalTime(&st);
sprintf(buff,"YEAR:%u/nMONTH:%u/nDAY:%u/nHOUR:%u/nMINUTE:%u/nSECOND:%u/n",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
send(clisock,buff,strlen(buff),0);
closesocket(clisock);
printf("server ok/n");
}
closesocket(servsock);
WSACleanup();
return 0;
}
下面是客户端
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
void usage(char *name)
{
fprintf(stderr,"usage: %s [ip [port]]/n",name);
}
int main(int argc, char* argv[])
{
SOCKET sock;
struct sockaddr_in sa;
int err;
int servport=5555;
char buff[256];
WSADATA wsd;
unsigned long uladder;
if (argc>3||argc<2)
{
usage(argv[0]);
return -1;
}
if (argc>1)
{
uladder=inet_addr(argv[1]);
if (uladder==INADDR_NONE)
{
usage(argv[0]);
return -1;
}
}
if (argc==3)
{
servport=atoi(argv[2]);
if (servport>65535||servport<1)
{
usage(argv[0]);
return -2;
}
}
if (WSAStartup(MAKEWORD(1,1),&wsd)!=0)
{
printf("wsastartup() failed !/n");
return -3;
}
printf("create socket ...../n");
sock=socket(AF_INET,SOCK_STREAM,0);
if (sock==INVALID_SOCKET)
{
fprintf(stderr,"socket() failed: %d/n",WSAGetLastError());
return -4;
}
printf("ok/n");
memset(&sa,0,sizeof(sa));
sa.sin_family=AF_INET;
sa.sin_port=htons(servport);
sa.sin_addr.S_un.S_addr=uladder;
printf("connecting ......../n");
err=connect(sock,(const sockaddr *)&sa,sizeof(sa));
if (err!=0)
{
fprintf(stderr,"connect() failed: %d/n",WSAGetLastError());
return -5;
}
printf("ok/n");
printf("recv data ......../n");
memset(buff,0,sizeof(buff));
if (recv(sock,buff,sizeof(buff),0)==SOCKET_ERROR)
{
fprintf(stderr,"recv error /n");
return -1;
}
printf("ok/n");
printf("server data/time:/n%s/n",buff);
closesocket(sock);
WSACleanup();
return 0;
}
运行图: