c语言winsock

Winsock.h是socket1.0 winsock2.h是socket2.0

Socket最初是在unix系统下为C语言开发的基于TCP的传输协议。winsock只是把它移到了windows系统。当然是兼容C的,可以下载socket的独立库使用C来调用,也可以使用其他编译器提供的库来调用,具体看兼容性。

#包含stdio.h

#包含WinSock.h

#pragma注释(lib," ws2_32.lib ")

一个C语言的winsock程序。 你没有接受IE发送的返回消息。我要是加两句就好了。

上述程序保持不变

char my buf[200];

while(1)

{

x;

SOCKET acc _ socket

ACC _ socket = accept(server _ socket,(struct sockaddr *)user_socket,sock _ size);

char FAR * buf = " HTTP/1.1 200 OK \ r \ n content-Type:text/html \ r \ n \ r \ n hello World!";

int n=send(acc_socket,buf,strlen(buf),0);

recv(acc_socket,mybuf,200,0);

如果(n!=-1){

printf(" \ n-");

printf("\n n:%d\n buf:\n%s\n循环:%d\n acc:%d ",n,buf,x,ACC _ socket);

}

C语言中winsock的问题 服务器端

/*

*客户端. c

*

*创建时间:2009年4月17日

*作者:瓦斯

*/

#包含stdio.h

#包含stdlib.h

#包含sys/types.h

#包含Winsock.h

//#包含Winsock2.h

#包含错误号h

#定义本地主机“127.0.0.1”

#定义端口号1234

静态套接字s _ sock

static int sock _ size

int main( int argc,char *argv[] ){

WSADATA wsadata

struct sockaddr _ in server _ addr

struct sockaddr _ in user _ addr

char tmp[256];

char buf[256];

struct hostent * shost

memset(server_addr,0x00,sizeof(server _ addr));

memset(user_addr,0x00,sizeof(user _ addr));

memset(tmp,0x00,sizeof(tmp));

memset(buf,0x00,sizeof(buf));

shost = gethostbyname(argv[1]);

if(argc 3)

{

//printf("客户端服务器ip端口\ n ");

}

server _ addr . sin _ family = AF _ INET;

server _ addr . sin _ addr . s _ addr = inet _ addr(LOCALHOST);//in addr _ ANY;

server _ addr.sin _ port = PORT _ NO

if(WSAStartup(MAKEWORD(1,1),wsadata)!= 0)

{

printf("WSAStartup失败。\ n ");

getchar();

退出(0);

}

s_sock = socket(AF_INET,SOCK_STREAM,0);

if(s_sock==-1)

{

printf("创建服务器套接字错误。\ n ");

getchar();

退出(0);

}

if(bind(s_sock,(struct sockaddr *)server_addr,sizeof(server _ addr))= = SOCKET _ ERROR)

{

printf("绑定错误。按任意键退出。\ n ");

getchar();

退出(0);

}

if(listen(s_sock,5) == SOCKET_ERROR)

{

printf("监听错误。按任意键退出。\ n ");

getchar();

退出(0);

}

printf("服务器地址:%d %d %d\n ",server_addr.sin_family,server_addr.sin_port,server _ addr . sin _ addr . s _ addr);

while(1)

{

SOCKET acc _ socket

acc_socket = accept(s_sock,(struct sockaddr *)user_addr,sock _ size);

printf("用户地址:%d %d %d\n ",user_addr.sin_family,user_addr.sin_port,user _ addr . sin _ addr . s _ addr);

if(acc_socket == INVALID_SOCKET)

{

printf(" ACC _ socket error \ n ");

printf("服务器地址:%d %d %d\n ",server_addr.sin_family,server_addr.sin_port,server _ addr . sin _ addr . s _ addr);

打破;

//继续;

}

printf("输入消息:");

scanf("%s ",tmp);

if(strncmp(tmp," exit ",4) == 0)

{

printf(" exit \ n ");

打破;

}否则

{

printf(" send \ n ");

}

int n = send(s_sock,tmp,strlen(tmp),0);

recv(acc_socket,buf,sizeof(buf),0);

printf("RMessage : %s\n ",buf);

如果(n == -1)

{

printf("发送服务器套接字错误。%s\n ",tmp);

getchar();

退出(0);

}

}

close socket(s _ sock);

WSACleanup();

返回EXIT _ SUCCESS

}

现在存在以下问题

我想实现客户端发送消息,服务器接受,然后返回消息给客户端。

现在

1服务器不启动,客户端报告连接错误,服务器启动,客户端报告绑定错误。为什么?

当服务器运行接受时,它总是返回一个错误。

谢谢你的帮助。

相关文章

发表新评论