socket编程之C语言一个简单监听程序
2016-01-29 10:27
676 查看
坚持 成长 每日一篇
一下是一个监听指定IP和端口号的服务端程序,只接收一次请求然后退出程序,程序环境是Mac环境,其他环境可以去掉NSlog
一下是一个监听指定IP和端口号的服务端程序,只接收一次请求然后退出程序,程序环境是Mac环境,其他环境可以去掉NSlog
#import <Foundation/Foundation.h> #import <sys/socket.h> #import <netinet/in.h> #import <stdint.h> #import <arpa/inet.h> #import <sys/types.h> #import <sys/uio.h> #import <unistd.h> int fun() { uint16_t a = 0x0102; uint8_t *p = (uint8_t *)&a; return (*p == 0x01); } int main(int argc, const char * argv[]) { NSLog(@"fun() = %d", fun()); int socketfd = -1; int connectSocketfd = -1; ssize_t ret = -1; struct sockaddr_in serverAddr; struct sockaddr_in clientAddr; socklen_t clientAddrLen; char recvBuf[100]; //设置网络的类型使用的是IPV4 serverAddr.sin_family = PF_INET; //设置监听接口 serverAddr.sin_port = htons(2048) ; //绑定监听IP inet_pton(PF_INET, "10.100.50.61", &(serverAddr.sin_addr.s_addr)); //创建Socket设置socket类型为字节流 socketfd = socket(PF_INET, SOCK_STREAM, 0); if (socketfd < 0) { perror("socket err"); return 0; } NSLog(@"socketfd = %d", socketfd); //绑定socket到相应的IP和端口 ret = bind(socketfd, (struct sockaddr *)&serverAddr, sizeof(serverAddr)); if (ret < 0) { perror("bind err"); close(socketfd); return 0; } NSLog(@"listen 11"); //监听socket ret = listen(socketfd, 5); if (ret < 0) { perror("listen err"); close(socketfd); return 0; } NSLog(@"listen 22"); NSLog(@"accept 11"); clientAddrLen = sizeof(clientAddr); //此处程序会堵塞,等待客户端链接socket connectSocketfd = accept(socketfd, (struct sockaddr *)&clientAddr, &clientAddrLen); if (connectSocketfd < 0) { perror("accept err"); close(socketfd); return 0; } NSLog(@"accept connectSocketfd = %d", connectSocketfd); ret = read(connectSocketfd, (void *)recvBuf, sizeof(recvBuf)); if (ret < 0) { perror("read err"); close(connectSocketfd); close(socketfd); return 0; } NSLog(@"read ret = %ld recvBuf = %s", ret, recvBuf); close(connectSocketfd); NSLog(@"close(connectSocketfd);"); close(socketfd); return 0; }
相关文章推荐
- c++随机数
- c++ 基类设计 需要注意的几点
- C语言程序员必读的5本书
- const和static的用法
- Notepad++搭配MinGW编译运行C,C++程序
- Notepad++配合MinGW直接编译运行C/C++代码的窍门
- Boost 学习之算法篇 partition_point
- 我不知道的C++
- C++文件读写详解(ofstream,ifstream,fstream)
- c语言:存款利息计算,1000元,存5年,求五种方案存款五年后的本息和
- c语言:我国国民生产总值的年增长率为10%,10年后国民生产总值与现在相比增长多少
- c语言:浪漫的putchar(),用数字向女朋友表白吧(ps:单身汪勿入)
- POJ3026 - Borg Maze [MST]
- C/C++区别
- 学习C字符串表示和字符串I/O(CprimerPlus11.1)的心得
- Effective C++: static_cast, const_cast
- C++复习五
- 减少C++代码编译时间的方法
- C/C++log日志库比较
- USACO Your Ride Is Here 解题日志