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服务器不启动,客户端报告连接错误,服务器启动,客户端报告绑定错误。为什么?
当服务器运行接受时,它总是返回一个错误。
谢谢你的帮助。
最后更新于 2023-10-08 15:58:30 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章