客户程序跟服务程序同在一个电脑,那客户程序连接的ip是?端口为什么不设置就出错呢
客户程序和服务程序同在一个电脑,那客户程序连接的ip是?端口为什么不设置就出错呢
这是客户程序
这是服务程序
------解决方案--------------------
IP是区分不同主机的;Port是区分不同应用程序的。两个都要有。
------解决方案--------------------
那客户程序连接的ip是:127.0.0.1....端口为什么不设置就出错呢:SOCKET连接需要指定端口的
这是客户程序
#include<Winsock.h>
#include<stdlib.h>
#include<stdio.h>
#pragma comment(lib,"ws2_32.lib")
int main(){
char buff[20];
int wVersionRequested =0x0201;
WSADATA wsaData;
WSAStartup( wVersionRequested, &wsaData );
struct sockaddr_in servaddr;
int sock;//,n;
//unsigned long ultime;
sock=socket(AF_INET,SOCK_STREAM,0);
if(sock==INVALID_SOCKET )
printf("error\n");
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(37);
servaddr.sin_addr.S_un.S_addr=inet_addr("172.21.107.176");
int ids=connect(sock,(const struct sockaddr*)&servaddr,sizeof(servaddr));
if(ids!=0){
printf("connect error %d\n",ids);
int err = WSAGetLastError();
printf("unknown error id = %d\n",err);
return 0;
}
int n;
if((n=recv(sock,buff,20,0 ))==SOCKET_ERROR){
int id = WSAGetLastError();
switch (id){
case WSANOTINITIALISED:
printf("not initialized\n");
break;
case WSASYSNOTREADY:
printf("sub sys not ready\n");
break;
case WSAHOST_NOT_FOUND:
printf("name server not found\n");
break;
case WSATRY_AGAIN:
printf("server fail\n");
break;
case WSANO_RECOVERY:
printf("no recovery\n");
break;
case WSAEINPROGRESS:
printf("socket blocked by other prog\n");
break;
case WSANO_DATA:
printf("no data record\n");
break;
case WSAEINTR:
printf("blocking call canciled\n");
break;
case WSAEPROCLIM:
printf("limit exceeded\n");
break;
case WSAEFAULT:
printf("lpWSAData in startup not valid\n");
default: printf("unknown error id = %d\n",id);
break;
}
}
buff[n]=0;
fputs(buff,stdout);
closesocket(sock);
return 0;
}
这是服务程序
#include<Winsock.h>当客户程序设置端口37,才能输出时间,为什么换台机子,就连不上服务器呢。还有,客户程序为什么要设置端口啊?不设置就出错时为什么?求解啊
#include<stdio.h>
#include<string.h>
#include<conio.h>
#pragma comment(lib,"ws2_32.lib")
#include<time.h>
#define LISTECOUNT 100
int main(){
int listened,newsock;
time_t ticks;
struct sockaddr_in servaddr;
char buff[100];
int wVersionRequested =0x0201;
WSADATA wsaData;
WSAStartup( wVersionRequested, &wsaData );
listened=socket(AF_INET,SOCK_STREAM,0);
if(listened<0){
printf("socket error %d\n",listened);
return 0;}
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(37);
servaddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
if(bind(listened,(const struct sockaddr*)&servaddr,sizeof(servaddr))){
printf("error\n");
return 0;
}
if(listen(listened,LISTECOUNT)){
printf("listen error \n");
}
while(1){
newsock=accept(listened,0,0);
ticks=time(NULL);
sprintf(buff,"%s\n",ctime(&ticks));
send(newsock,buff,strlen(buff),0);
closesocket(newsock);
}
}
------解决方案--------------------
IP是区分不同主机的;Port是区分不同应用程序的。两个都要有。
------解决方案--------------------
那客户程序连接的ip是:127.0.0.1....端口为什么不设置就出错呢:SOCKET连接需要指定端口的