C语言套接字(C语言套接字接收)

本文讲的是C语言socket以及C语言socket recv对应的知识点。希望对你有帮助,也别忘了收藏这个站点。

这篇文章的列表: 1.C语言中的套接字问题 2.C语言Socket服务器如何向客户端发送消息? 3,C语言编程socket有一个客服端和一个服务器端如何构建文件并运行。 4.C语言套接字函数实例。 5.如何用C语言做socket网络编程? c语言中的套接字问题 退出(0);没错。

向void main()添加新行

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

应该够了。

C语言套接字服务器如何向客户端发送消息? 你文件中的问题

//将阻止进程,直到客户端连接。

//因为是直到客户端连接,所以需要找出哪个套接字连接到客户端。

// sockClient是连接到客户端的套接字。

sockClient = accept(sockServer,(SOCKADDR*)addrClient,len);

//接收并打印客户端数据。

recv(sockClient,recvBuf,100,0);

printf("%s\n ",recvBuf);

//所以这里sockServer要改成sockClient。

send(/*sockServer*/sockClient,sendBuf,100,0);

PS:服务器和客户端的通信是保持服务器和客户端的连接。

你不能像这样立即关闭它。如果设置错误,立即关闭,缓冲区中的数据将会丢失。那么客户端将不再接收数据。

可以加睡眠(10000);测量是一个沟通过程。

//关闭套接字

close socket(sock client);

c语言编程socket有一个客户端和一个服务端。如何建立文件并运行? 网络Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket还有一个类似于打开文件的函数调用Socket(),返回一个整数的Socket描述符,后续的连接建立、数据传输等操作都是通过这个Socket实现的。

下面用socket实现一个windows下C语言Socket通信的例子,我们的客户端发送一个字符串,服务器接收。

[服务器端]

#包含" stdafx.h "

#包含stdio.h

#包含winsock2.h

#包含winsock2.h

#定义服务器端口5208 //监听端口

void main()

{

WORD wVersionRequested

WSADATA wsaData

int ret,nLeft,length

SOCKET sListen,sServer//监听套接字并连接套接字

结构sockaddr_in saServer,saClient//地址信息

char * ptr//遍历信息的指针

//WinSock初始化

wVersionRequested=MAKEWORD(2,2);//您要使用的WinSock DLL版本。

ret = wsa startup(wVersionRequested,wsa data);

如果(ret!=0)

{

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

返回;

}

//创建套接字并使用TCP协议。

sListen=socket(AF_INET,SOCK_STREAM,IP proto _ TCP);

if (sListen == INVALID_SOCKET)

{

WSACleanup();

printf("socket()失败!\ n ");

返回;

}

//建立本地地址信息

saServer.sin _ family = AF _ INET//地址族

sa SERVER . sin _ PORT = htons(SERVER _ PORT);//注意是转换成网络字节顺序。

saServer.sin_addr。S_un。s _ addr = htonl(in addr _ ANY);//使用INADDR_ANY表示任意地址。

//绑定

ret = bind(sListen,(struct sockaddr *)saServer,sizeof(sa server));

if (ret == SOCKET_ERROR)

{

printf("bind()失败!代码:%d\n ",WSAGetLastError());

close socket(sListen);//关闭套接字

WSACleanup();

返回;

}

//侦听连接请求

ret = listen(sListen,5);

if (ret == SOCKET_ERROR)

{

printf("listen()失败!代码:%d\n ",WSAGetLastError());

close socket(sListen);//关闭套接字

返回;

}

printf("等待客户端连接!\ n ");

printf("提示:Ctrl+c退出!\ n ");

//阻止等待接受客户端连接

While(1)//循环监控客户端,永不停止,所以,在这个项目中,我们没有心跳包。

{

length = sizeof(sa client);

sServer = accept(sListen,(struct sockaddr *)saClient,length);

if (sServer == INVALID_SOCKET)

{

printf("accept()失败!代码:%d\n ",WSAGetLastError());

close socket(sListen);//关闭套接字

WSACleanup();

返回;

}

char接收消息[5000];

nlef = sizeof(receive message);

ptr =(char *)receive message;

while(nlef 0)

{

//接收数据

ret = recv(sServer,ptr,5000,0);

if (ret == SOCKET_ERROR)

{

printf("recv()失败!\ n ");

返回;

}

If (ret == 0) //客户端已经关闭了连接。

{

printf("客户端已关闭连接\ n ");

打破;

}

nLeft-= ret;

ptr = ret

}

printf("接收消息:%s\n ",receive message);//打印我们收到的消息。

}

//close socket(s listen);

//close socket(s server);

//WSACleanup();

}

[客户]

#包含" stdafx.h "

#包含stdio.h

#包含stdlib.h

#包含winsock2.h

#定义服务器端口5208 //监听端口

void main()

C语言中套接字函数的实例 函数描述:socket()用于创建新的socket,即向系统注册,通知系统建立通信端口。参数domain指定使用什么地址类型,在/usr/include/bits/socket.h中有完整的定义,下面是常见的协议:

pf _ UNIX/pf _ local/af _ UNIX/af _ local UNIX进程通信协议

PF_INET?AF_INET Ipv4网络协议

PF_INET6/AF_INET6 Ipv6网络协议

PF_IPX/AF_IPX IPX-Novell协议

PF_NETLINK/AF_NETLINK核心用户接口设备

PF _ X25/AF _ X25 ITU-T x . 25/ISO-8208协议

PF_AX25/AF_AX25业余无线AX。25协议

PF _ at PVC/AF _ at PVC访问原始的ATMPVC。

PF _ AppleTalk/AF _ AppleTalk

PF_PACKET/AF_PACKET主包接口

参数类型具有以下值:

1.SOCK_STREAM提供双向连续可靠的数据流,即TCP。它支持OOB机制,所有数据传输前必须使用connect()建立连接状态。

2.SOCK_DGRAM使用不连续、不可靠的数据包进行连接。

3.SOCK_SEQPACKET提供连续可靠的数据包连接。

4.SOCK_RAW提供了对原始网络协议的访问。

5.SOCK_RDM提供可靠的数据包连接。

6.SOCK_PACKET提供了与网络驱动程序的直接通信。协议用于指定套接字使用的传输协议号。通常,该参考值设置为0。

返回值:成功时返回套接字处理代码,失败时返回-1。

错误代码:

1.EPROTONOSUPPORT参数域指定的类型不支持参数类型或协议指定的协议。

2.ENFILE核心内存不足,因此无法创建新的套接字结构。

3.EMFILE进程文件表溢出,因此无法创建新的套接字。

4.EACCESS权限不足,无法建立由类型或协议指定的协议。

5.ENOBUFS/ENOMEM内存不足。

6.EINVAL参数域/类型/协议非法。

如何用C语言做socket网络编程? Mfc只是封装了socket,大部分人都是用原来的socket进行网络编程。例如,下面的接口可以在c下调用。

1 .插座()

2 .绑定()

3 .连接()

4 .听()

5 .接受()

6.send()和recv()

7.sendto()和recvfrom()

8 .关闭()和关闭()

9.getpeername()

10.gethostname()

这些接口是在Winsock2.h中定义的,而不是在mfc中。只需要包含Winsock2.h头文件和Ws2_32.lib库即可。

C语言socket的介绍就到此为止吧。感谢您花时间阅读本网站的内容。不要忘记在这个站点中搜索更多关于C语言套接字recv和C语言套接字的信息。

相关文章

发表新评论