社区
Linux/Unix社区
帖子详情
麻烦列出在linux或unix平台下C++编套接字通讯程序要用到哪些库或头文件
tangrh
2005-01-17 09:00:05
我需要在linux下用C++写一个TCP程序,采用标准的bsd套接口API,技术上估计不会有问题,关键是由于以前没有搞过C和C++,所以对头文件和标准库都不熟,哪位帮忙列举一下,谢谢
...全文
126
9
打赏
收藏
麻烦列出在linux或unix平台下C++编套接字通讯程序要用到哪些库或头文件
我需要在linux下用C++写一个TCP程序,采用标准的bsd套接口API,技术上估计不会有问题,关键是由于以前没有搞过C和C++,所以对头文件和标准库都不熟,哪位帮忙列举一下,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tangrh
2005-01-17
打赏
举报
回复
好啊,有点眉目了
pacman2000
2005-01-17
打赏
举报
回复
和C的头文件是一样的啊!用到什么函数,man一下看看就知道要哪些头文件了。
whoho
2005-01-17
打赏
举报
回复
客户端
#include <cstdio>
#include <string>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <memory.h>
#include <arpa/inet.h>
int main()
{
int sock;
sockaddr_in addr;
socklen_t addr_len = sizeof(addr);
//create DATAGRAM socket
sock = socket(AF_INET, SOCK_DGRAM, 0);
//binding
memset(&addr, 0, addr_len);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
addr.sin_port = htons(1234);
bind(sock, (sockaddr*)&addr, addr_len);
//send
std::string content("######### Hello Server ######### ");
content += '\0';
sendto(sock, content.c_str(), content.size(), 0,
(sockaddr*)&addr, addr_len);
//get reply
sockaddr_in srv_addr;
char buf[1024];
int n = recvfrom(sock, buf, 1024, 0,
(sockaddr*)&srv_addr, &addr_len);
printf("%d bytes of reply recieved, content: \n%s\n", n, buf);
}
whoho
2005-01-17
打赏
举报
回复
给你一个简单的udp例子,两个文件,先是服务器
#include <cstdio>
#include <string>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <memory.h>
#include <cassert>
int main()
{
int sock;
sockaddr_in addr;
socklen_t addr_len = sizeof(addr);
//create DATAGRAM socket
sock = socket(AF_INET, SOCK_DGRAM, 0);
//binding
memset(&addr, 0, addr_len);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons(1234);
bind(sock, (sockaddr*)&addr, addr_len);
while(true)
{
sockaddr_in client_addr;
char buf[1024];
//recieve
int n = recvfrom(sock, buf, 1024, 0,
(sockaddr*)&client_addr, &addr_len);
printf("%d bytes recieved, content: \n%s\n", n, buf);
//reply
std::string reply("you sent: ");
reply += buf; reply += "\nacknowleged\n";
reply+='\0';
printf("reply content is:\n%s ", reply.c_str());
sendto(sock, reply.c_str(), reply.size(), 0,
(sockaddr*)&client_addr, addr_len);
}
}
whoho
2005-01-17
打赏
举报
回复
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
这三个基本够了
tengulre
2005-01-17
打赏
举报
回复
#include <sys/types.h>
#include <sys/socket.h>
tangrh
2005-01-17
打赏
举报
回复
我自己找了篇文章,先把它列出来吧
sys/types.h 必要的类型定义头文件
errno.h 全局错误号头文件
sys/socket.h sockaddr结构,系统函数原型和常数
netdb.h 网络信息查找函数原型和结构
netinet/in.h sockaddr_in结构,字节序宏定义
arpa/inet.h 工具函数原型
tangrh
2005-01-17
打赏
举报
回复
楼上:
你有没有用过epoll?另外你是如何轮询套接字的
Neo_Liu
2005-01-17
打赏
举报
回复
这是我写的一个代理程序引用的头文件
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/time.h>
#include <unistd.h>
#include <netdb.h>
#include <pthread.h>
#include <sys/select.h>
#include <assert.h>
C++
套接字
编
程
C++
套接字
编
程 Socket简介 80年代初,人们在
UNIX
操作系统下实现TCP/IP协议。 研究人员为TCP/IP网络通信开发了一个API(应用
程序
接口)。 这个API称为Socket接口(
套接字
)。 SOCKET接口是TCP/IP网络最为通用的API,也是在INTERNET上进行应用开发最为通用的API。 90年代初,Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络
编
程接口,即WindowsSockets规范。 增加了一些异步函数,并增加了符合Windows消息驱动特性的网络事
C++
unix
域
套接字
(
Unix
domain socket)客户端服务端代码示例demo、抽象
套接字
(Abstract Socket)
抽象
套接字
是
Unix
域
套接字
的扩展,引入了一种特殊的命名约定,用于创建不依赖于文件系统路径的
套接字
。文件路径冲突:
Unix
域
套接字
使用文件系统中的特殊文件进行通信,因此需要选择一个合适的文件路径来创建
套接字
。适当设置文件权限可以提高安全性。因此,可以说抽象
套接字
是
Unix
域
套接字
的一种变体或特殊情况,它们共享相同的通信机制和特性,但在
套接字
的命名和可见性方面有所区别。总之,
Unix
域
套接字
利用文件系统的特殊文件作为通信的载体,在内核层实现进程间的通信,提供了高效、可靠且安全的进程间通信机制。
Linux
c/
c++
开发常用
头文件
c/
c++
开发常用的
头文件
说明,可以详细参考代码中的注释 /************************************************************************** * Copyright (c) 2015-2024 Hybase@qq.com * * Author: hybase@qq.com QQ:23207689 WebChat: hybase * http://blog.csdn.net/zymill * http:
【
Linux
网络(
C++
)】——网络
套接字
(TCP/UDP
编
程模型)多进程,多线程,线程池服务器开发(画图解析)
TCP/IP协议传输层的主要任务是向位于不同的(有时候位于同一主机)上的应用
程序
提供端到端的通信服务,为了区分应用
程序
,TCP和UDP引入了端口号的概念。 端口号 端口号(port)是传输层协议的内容 是一个2字节的16位整数。 端口号是用来表示进程的,告诉操作系统,当前的数据要交给哪一个进程处理 ip地址+端口号能够标识网络上一台主机上的一个进程。 一个端口号只能标识一个进程 在同一台机器上,进程的间的端口号都是不同的。 任何的网络服务与网络客户端,如果要进行正常的数据通信,必须使用..
c
c++
头文件
Linux
系统
头文件
c语言 验证
程序
断言 支持复数算术运算 字符类型 出错码 浮点环境 浮点常量 整型格式转换 替代关系操作符宏 实现常量 局部类别 数学常量 非局部goto 信号 可变参数表 布尔类型和值 标准定义 整型 标准I/O
库
实用
程序
库
函数 字符串操作 通用类型数学宏 时间和日期
Linux/Unix社区
23,125
社区成员
74,509
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章