C语言用Socket连接FTP服务端发送帐号的问题
#include<winsock2.h>#include<stdio.h>#pragmacomment(lib,"ws2_32")voidmain...
#include <winsock2.h>#include <stdio.h>#pragma comment (lib,"ws2_32")void main(){SOCKET socket1;WSADATA wsaData;if(WSAStartup(MAKEWORD(2,2),&wsaData)){ printf("Winsock无法初始化!\n"); WSACleanup(); return ;}struct sockaddr_in server;server.sin_family=AF_INET;server.sin_port=htons(21);server.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");socket1=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);int serverlen=sizeof(server);connect(socket1, (SOCKADDR*)&server, sizeof(SOCKADDR));char buffer[512]={0};char recvbuffer[512]={0};recv(socket1,recvbuffer,sizeof(recvbuffer),0);printf(recvbuffer);strcpy(buffer,"user abc \r\n");send(socket1,buffer,sizeof(buffer),0);memset(recvbuffer,'\0',512);recv(socket1,recvbuffer,sizeof(recvbuffer),0);//就是这儿接收不到消息程序一直停在这儿不往下执行了,这有可能是什么原因呢?我用的是Serv-U10.3版本的服务器,就建在本机上的printf(buffer);closesocket(socket1);WSACleanup();}
展开
展开全部
敢不敢排个版
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实这一切就看你代码是怎么写的,如果你写成客户端在一直等待服务器端的数据,那当然,服务器端如果没有发送任何消息,那么客户端就会卡在这段代码上,一直等待服务器端等信息,直到服务器关闭或者发送来信息,得到的值也不会是-1,除非服务器端发送的数据就是-1。相反,你的代码写成在客户端与服务器端在相连接后,服务器端一直等待客户端的信息,客户端如果不发送信息的话,服务器端就会卡在这行代码上,不往下运行直到客户端关闭或者客户端发送来命令。这种情况会导致服务器或者客户端处于一直等待的情况,两边接收的值不一样,发送边发送的是Int型的,接收边接收的是Long型的,两边数据类型不匹配,这边短另一边长,会导致接收端一直接收所以,你如果想写一个socket程序,建议你用多线程,网上有书,你可以参考参考
到官方网站看看。挺好的呀,2011/10/1 17:40:11
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询