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语言套接字的信息。
最后更新于 2023-09-13 08:44:09 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章
- C语言中运算符的含义是什么(C语言中每个运算符的含义)
- Pop3电子邮件接收C语言(什么是电子邮件pop3)
- c语言结构心得(c语言结构笔记)
- Knnc语言(knn代码实现)
- C语言查找最长的字符串(C语言字符串比较长度)