现在的位置: 首页 > 综合 > 正文

没事写的一个客户端服务器端的程序

2013年12月07日 ⁄ 综合 ⁄ 共 3209字 ⁄ 字号 评论关闭

这个是服务端

#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;
}
运行图:

抱歉!评论已关闭.