winsocket通信 简单问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 23:21:57
这个实现客户端向服务器发出连接请求,服务器发送消息给客户,客户显示,问题是服务器端可以运行,客户端运行是出现错我!
高手帮我调调,谢谢。
出来了在加50分,绝不食言!
客户单:client.cpp如下:
#include"stdio.h"
#include"string.h"
#include"winsock.h"
#pragma comment(lib,"Ws2_32")
main()

{
int sockfd;
int flag;
int err;
struct hostent *ptrh;
struct sockaddr_in server_addr;/* 服务器地址信息*/
char buf[1000];
char* host;

memset((char*)&server_addr,0,sizeof(server_addr));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(6000);
host="localhost";
ptrh=gethostbyname(host);
memcpy(&server_addr.sin_addr,ptrh->h_addr,ptrh->h_length);

WSADATA ws;
err=WSAStartup(MAKEWORD(2,2),&ws);/*初始化windows Socket Dll*/
if(err!=0){
exit(0);
}
/*创建一个套接字*/
sockfd = socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0){
fprintf(stderr,"socket crea

我有源代码,你要不要?就是用套节字的
把你邮箱留下
--------------------------

给你发了

单步执行下,我稍微试了下发现是
memcpy(&server_addr.sin_addr,ptrh->h_addr,ptrh->h_length); 出错了,把它注释掉后显示连接错误,详细程序还没看。
改了下,把不必要的去掉了。程序简化。。。
先运行sever再运行client
#include"stdio.h"
#include"string.h"
#include"winsock.h"
#pragma comment(lib,"Ws2_32")
main()

{
int sockfd;
int flag;
int err;
struct hostent *ptrh;
struct sockaddr_in server_addr;/* 服务器地址信息*/
char buf[1000];
char* host;

memset((char*)&server_addr,0,sizeof(server_addr));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(6000);
server_addr.sin_addr.S_un.S_addr= inet_addr("127.0.0.1");
WSADATA ws;
err=WSAStartup(MAKEWORD(2,2),&ws);/*初始化windows Socket Dll*/
if(err!=0){
exit(0);
}
/*创建一个套接字*/
sockfd = socket(AF_INET,SOCK_STREAM,0);