TCP客户端程序源代码如何编写?
答案:2 悬赏:80
解决时间 2021-02-18 14:03
- 提问者网友:柠檬香
- 2021-02-18 06:11
TCP客户端程序源代码如何编写?
最佳答案
- 二级知识专家网友:飘零作归宿
- 2021-02-18 07:30
int client() { system("color 0a"); //修改DOS窗口颜色,是其成0A。 WORD wVersion=MAKEWORd(1,1); WSADATA wsData; int nResult= WSAStartup(wVersion,&wsData); //启动WINSOCKET if(nResult !=0) { printf("启动Winsock失败!\n"); } SOCKET sc=socket(AF_INET,SOCK_STREAM,IPPROTO_IP); //创建套接字 if(sc==INVALID_SOCKET) { printf("创建套接字失败!\n"); } SOCKADDR_IN addrSc; addrSc.sin_family=AF_INET; addrSc.sin_port=htons(portNum); //保证字节顺序 char IP[20]; again: printf("请输入服务器的IP地址:"); gets(IP); if( -1==inet_addr(IP) ) //循环检测IP地址是否合法 { printf("IP地址错误!\n"); goto again; } addrSc.sin_addr.S_un.S_addr=inet_addr(IP); int b=0; while(b<5) //检测5次,如果服务器在此时间内启动,则进行连接 { nResult=connect(sc,(SOCKADDR*)&addrSc,sizeof(SOCKADDR)); //套接字连接 Sleep((DWORD)100); //延时1秒 if(nResult==SOCKET_ERROR) { printf(" %d 次连接失败!\n",b+1); } else break; b++; } if(nResult==SOCKET_ERROR) { printf("登陆超时,请重新登陆!\n"); goto again; } char *buf="连接成功!"; //向服务端验证连接成功 nResult=send(sc,buf,strlen(buf)+1,0); if(nResult==SOCKET_ERROR) { printf("5.套接字发送数据失败!\n"); return 0; } char mess[M]; nResult =recv(sc,mess,strlen(mess),0); //接受服务端的连接验证信息 if(nResult == -1 ) //判断服务端是否关闭 { printf("\n服务端已断开\n"); system("pause"); exit(0); } printf("%s\n",mess); tianle: system("cls"); //清屏 puts("\n\n"); puts(" * * "); puts(" * 欢·迎·使·用·局·域·网·文·件·发·送·工·具 *"); puts(" * (客 户 端) * "); puts(" * * "); puts(" * * "); puts(" * 请等待服务端的相应操作 * "); puts(" * * "); puts(" * * "); puts(" * 天乐软件工作室制作 * "); puts(" * 2008-3-1 * "); puts(" * 版权所有★欢迎传播 * "); puts("全屏(退出全屏)操作请按:ALT+ENTER\n"); char rMess[100]; nResult=recv(sc,rMess,strlen(rMess),0); //接收服务端发来的操作请求 if(nResult==-1) //判断服务端是否关闭 { printf("\n服务端已断开\n"); system("pause"); goto tianle; } printf("%s\n",rMess); char ch; char str[100]; gets(str); ch=str[0]; while( ch!='Y' && ch!='y' && ch!='N' && ch!='n' ) //处理客户端的错误输入 { printf("输入有误,请重新输入(Y/N):"); gets(str); ch=str[0]; } send(sc,&ch,sizeof(char),0); //向服务端反馈选择,并执行相应操作 if(strcmp(rMess,"服务端向你传送文件,是否接受(Y/N):")==0 && (ch=='Y' || ch=='y') ) { receiveFile(sc); } if(strcmp(rMess,"服务端向你发起聊天,是否接受(Y/N):")==0 && (ch=='Y' || ch=='y') ) { chatting_client(sc); } if(ch=='N' || ch=='n') { printf("你拒绝了!\n"); system("pause"); } system("cls"); goto tianle; nResult=closesocket(sc); //关闭套接字 if(nResult==SOCKET_ERROR) { printf("8.关闭套接字失败!\n"); return 0; } }
满意请采纳
满意请采纳
全部回答
- 1楼网友:偏爱自由
- 2021-02-18 08:44
不明白啊 = =!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |