UNIX网络编程练习-获取客户端IP和端口
来源:互联网 发布:天津城建大学学校域名 编辑:程序博客网 时间:2024/05/22 03:12
// 服务端程序// DATE: 2015.11.30// AUTH: robertkun#include <netinet/in.h>#include <sys/socket.h>#include <sys/types.h>#include <arpa/inet.h>#include <stdlib.h>#include <stdio.h>#include <iostream>#include <string.h>#include <unistd.h>#include <errno.h>using namespace std;typedef struct sockaddr SA;int main(){char buff[256] = {0};// 创建TCP套接字int _fd = socket(AF_INET, SOCK_STREAM, 0);// 绑定端口到套接字struct sockaddr_in addr;bzero(&addr, sizeof(addr));addr.sin_family = AF_INET;addr.sin_addr.s_addr = htonl(INADDR_ANY);addr.sin_port = htons(6543);if(bind(_fd, (SA *)&addr, sizeof(addr)) != 0) {cerr<<"bind error!"<<errno<<endl;return -1;}// 打开监听if(listen(_fd, 256) != 0) {cerr<<"listen error!"<<endl;return -1;}// 等待连接while(1){struct sockaddr_in c_addr;socklen_t c_len = sizeof(c_addr); // 这里必须初始化,才可以使用int _connfd = accept(_fd, (SA *)&c_addr, &c_len);if(_connfd) {// 获取客户端信息,也可以使用getpeername()函数//getpeername(_connfd, (SA *)&c_addr, &c_len);cout<<"accept ok! "<<"client = "<<inet_ntoa(c_addr.sin_addr)<<":"<<ntohs(c_addr.sin_port)<<endl;}time_t ticks = time(NULL);snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks));write(_connfd, buff, strlen(buff));// 终止连接close(_connfd);}return 0;}
输出:
man accept:
The addrlen argument is a value-result argument:
the caller must initialize it to contain the size (in bytes) of the structure pointed to by addr;
on return it will contain the actual size of the peer address.
0 0
- UNIX网络编程练习-获取客户端IP和端口
- UNIX网络编程学习(8)--服务器端显示客户端的IP地址和端口号
- UNIX网络编程练习-简单的时间服务器和客户端
- 【unix网络编程】4-11显示客户IP地址和端口号的时间获取服务程序
- unix网络基础-显示客户IP地址和端口号的时间获取服务器程序
- Unix网络编程—为客户端进程指定端口
- UNIX网络编程----TCP客户端和服务器端
- UNIX网络编程----UDP客户端和服务器端
- Java网络编程:ip地址和端口
- nodemcu获取客户端端口ip
- unix网络编程卷1 时间获取客户端程序
- Linux网络编程----bind自动获取自己的IP和PORT,端口使用的注意事项
- UNIX网络编程简单练习
- C#中用Socket网络编程的问题,从客户端把数据发送到指定的IP和端口
- 网络编程—获取主机名和ip
- unix网络编程 时间服务端和客户端设计
- unix网络编程---服务器和客户端上的异常处理
- UNIX练习-tcp/ip客户端( - - 写unix得审核....)
- Chromium Weekly 3
- JavaSE(13)(异常和文件类)
- 【discuz免费插件】众大智能云采集5.0版
- Jmeter
- linux驱动框架--hwmon学习
- UNIX网络编程练习-获取客户端IP和端口
- java csv 逗号 excel 乱码
- hibernate持久化实现——实体对象生命周期
- net protocol
- Java集合-Collection整体框架
- springmvc 上传图片中文乱码解决方案
- Android实现获取验证码的倒计时功能
- 数据结构基础8:散列查找(哈希查找)
- linux kernel 中断子系统之(一)-- ARM GIC 硬件