[tcp/ip] 有链接交互式通信

client.cpp

#include <Winsock2.h>
#include <stdio.h>
#define DEFAULT_PORT 5050
#define DATA_BUFFER 1024
int main(int argc,char *argv[])
{
    WSADATA wsaData;
    SOCKET sClient;
    int iPort = DEFAULT_PORT;
    int iLen,iSend;
    char buf[DATA_BUFFER];
    struct sockaddr_in ser;
    if(argc<2)
    {
        printf("Usage:client [server IP address]\n");
        return 0;
    }
    memset(buf,0,sizeof(buf));
    if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
    {
        printf("Failed to load Winsock.\n");
        return 0;
    }
    ser.sin_family = AF_INET;
    ser.sin_port = htons(iPort);
    ser.sin_addr.s_addr=inet_addr(argv[1]);
    sClient = socket(AF_INET,SOCK_STREAM,0);
    if(sClient==INVALID_SOCKET)
    {
    	 printf("socket()Failed:%d\n",WSAGetLastError());
        return 0;
    }
    if(connect(sClient,(struct sockaddr*)&ser,sizeof(ser))==INVALID_SOCKET)
    {
    	 printf("connect()Failed:%d\n",WSAGetLastError());
        return 0;
    }
    else
    {
    	/*while(1)
        {
            iLen=recv(sClient,buf,sizeof(buf),0);
    	if(iLen==0)
    	{
    		return 0;
    	}
    	else if(iLen==SOCKET_ERROR)
    	{
    		printf("recv()Failed:%d\n",WSAGetLastError());
            return 0;
    	}
    	if(buf[0]=='#') printf("break");
    	printf(":%s\n",buf);

        }*/
        while(1)
       {
        gets(buf);
        iSend = send(sClient,buf,sizeof(buf),0);
        if(iSend==SOCKET_ERROR)
        {
            printf("send()Failed:%d\n",WSAGetLastError());
            break;
        }
        else if(iSend==0) break;
        else
        {
           // printf("send()byte:%d\n",iSend);
           // printf("-----------------------\n");
        }
        if(buf[0]=='#')break;
    }
    }
    closesocket(sClient);
    WSACleanup();

    return 0;
}

server.cpp

#include<Winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#define DEFAULT_PORT 5050
int main()
{
    while(1)
    {
    int iPort = DEFAULT_PORT;
    WSADATA  wsaData;
    SOCKET   sListen,sAccept;
    int iLen;
    int iSend;
    char buf[100000];
    struct sockaddr_in ser,cli;
    if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
    {
        printf("Failed to load Winsock.\n");
        return 0;
    }
    sListen = socket(AF_INET,SOCK_STREAM,0);
    if(sListen == INVALID_SOCKET)
    {
        printf("socket()Failed:%d\n",WSAGetLastError());
        return 0;
    }
    ser.sin_family = AF_INET;
    ser.sin_port = htons(iPort);
    ser.sin_addr.s_addr=htonl(INADDR_ANY);
    if(bind(sListen,(LPSOCKADDR)&ser,sizeof(ser))==SOCKET_ERROR)
    {
        printf("bind()Failed:%d\n",WSAGetLastError());
        return 0;
    }
    if(listen(sListen,5)==SOCKET_ERROR)
    {
        printf("listen()Failed:%d\n",WSAGetLastError());
        return 0;
    }
    iLen = sizeof(cli);
    sAccept = accept(sListen,(struct sockaddr*)&cli,&iLen);
        if(sAccept==INVALID_SOCKET)
        {
            printf("accept()Failed:%d\n",WSAGetLastError());
            return 0;
        }
   // printf("Accepted client IP:[%s],port:[%d]\n",inet_ntoa(cli.sin_addr),ntohs(cli.sin_port));
       /*while(1)
       {
           scanf("%s",buf);
        iSend = send(sAccept,buf,sizeof(buf),0);
        if(iSend==SOCKET_ERROR)
        {
            printf("send()Failed:%d\n",WSAGetLastError());
            break;
        }
        else if(iSend==0) break;
        else
        {
           // printf("send()byte:%d\n",iSend);
           // printf("-----------------------\n");
        }
        if(buf[0]=='#')break;
    }*/
        while(1)
        {
           // cout<<"ee"<<endl;
            iLen=recv(sAccept,buf,sizeof(buf),0);
    	if(iLen==0)
    	{
    		break;
    	}
    	else if(iLen==SOCKET_ERROR)
    	{
    		printf("recv()Failed:%d\n",WSAGetLastError());
           break;
    	}
    	if(buf[0]=='#') printf("quit\n");
    	else {printf("Eric:");puts(buf);}
    	//cout<<"tt"<<endl;

        }
    closesocket(sAccept);
    closesocket(sListen);
    WSACleanup();
    }
    return 0;
}

全部评论

相关推荐

Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务