vc下的通信问题

hgug 2004-01-24 08:57:25
本人用wsock32.lib写了两个基于TCP/IP的简单的通信程序,
在同一台机子不同端口上实验(编译是通过拉),server正常,
client就是连不上,ping ip不通,找主机名能找到,WHY?
(主机IP已经设为24.85.151.24)
server程序:
#include "Winsock.h"
#include "windows.h"
#include "stdio.h"
#pragma comment(lib,"wsock32.lib")
#define RECV_PORT 2000
#define SEND_PORT 3000

SOCKET sock,sock1;
sockaddr_in ServerAddr;
sockaddr_in ClientAddr;
int Addrlen;

DWORD StartSock()
{
WSADATA WSAData;
if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)
{
printf("sock int fail !\n");
return(-1);
}
return(1);
}

DWORD CreateSocket()
{
sock=socket(AF_INET,SOCK_STREAM,0);
if(sock==SOCKET_ERROR)
{
printf("sock create fail !\n");
WSACleanup();
return -1;
}
ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY);
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_port=htons(RECV_PORT);
if(bind(sock,(struct sockaddr FAR *)&ServerAddr,
sizeof(ServerAddr))==SOCKET_ERROR)
{
printf("bind is the error");
return -1;
}
return 1;
}

DWORD ConnetProcess()
{
char buff[80];
Addrlen=sizeof(sockaddr_in);
if(listen(sock,5)<0)
{
printf("Listen error");
return -1;
}
printf("Linstening.....\n");
for(;;)
{
sock1=accept(sock,(struct sockaddr FAR *)&ClientAddr,&Addrlen);
for(;;)
{
memset(buff,0,80);
if(recv(sock1,buff,80,0)<=0)
{
break;
}
printf(buff);
printf("\n");
}
}
}


int main()
{
if(StartSock()==-1)
return -1;
if(CreateSocket()==-1)
return -1;
if(ConnetProcess()==-1)
return -1;
return 1;
}

client程序:
#include "Winsock.h"
#include "windows.h"
#include "stdio.h"
#pragma comment(lib,"wsock32.lib")
#define RECV_PORT 2000
#define SEND_PORT 3000

SOCKET sock;
sockaddr_in ServerAddr;

DWORD StartSock()
{
WSADATA WSAData;
if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)
{
printf("sock init fail !");
return -1;
}
ServerAddr.sin_addr.s_addr=inet_addr("24.85.151.24");
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_port=htons(RECV_PORT);
return 1;
}

DWORD CreateSocket()
{
sock=socket(AF_INET,SOCK_STREAM,0);
if(sock==SOCKET_ERROR)
{
printf("sock init fail!\n");
WSACleanup();
return -1;
}
return 1;
}

DWORD CallServer()
{
CreateSocket();
if(connect(sock,(struct sockaddr *)&ServerAddr,
sizeof(ServerAddr))==SOCKET_ERROR)
{
printf("Connect fail!\n");
closesocket(sock);
return -1;
}
return 1;
}

DWORD TCPSend(char data[])
{
int length;
length=send(sock,data,strlen(data),0);
if(length<=0)
{
printf("Send data error !\n");
closesocket(sock);
WSACleanup();
return -1;
}
return 1;
}

int main()
{
char buff[80];
int num,i;
StartSock();
while(CallServer()==-1);
printf("Connect ok !\n");
printf("press any key to send !");
getchar();
for(;;)
{
printf("Input the number of message to send :(0-exit)");
memset(buff,0,80);
scanf("%d",&num);
if(num<=0)
break;
for(i=0;i<num;i++)
{
sprintf(buff,"data%d",i);
printf(buff);
printf("\n");
TCPSend(buff);
Sleep(100);
}
}
return 0;
}
...全文
18 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcs1980 2004-01-25
  • 打赏
  • 举报
回复
在同一台机子不同端口上实验(编译是通过拉),server正常,
client就是连不上,ping ip不通,找主机名能找到,WHY?
(主机IP已经设为24.85.151.24)

你先解决计算机上网问题(在局域网中能否正常工作)然后再看程序!

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧