linux网络服务器
2015-11-23 15:41
525 查看
在本次中,学习了一个简单的基于TCP/IP的服务器/客户端。在例子中,利用的是AF_INET域。在linux下,最常用就是AF_INET,AF_UNIX. AF_UNIX是linux文件系统实现的本地要借字。后面的是可以用于包括英特网在内的TCP/IP网络通信的程序。
下面来看一个简单的基于TCP/IP的程序例子:
服务器端:
下面来看一个简单的基于TCP/IP的程序例子:
#include <iostream> #include<sys/types.h> #include<sys/socket.h> #include<stdio.h> #include<sys/un.h> #include<netinet/in.h> #include<arpa/inet.h> #include<unistd.h> #include<stdlib.h> using namespace std; //一个简单的客户端程序 int main() { int sockfd; int len; struct sockaddr_in address; int result; char ch = 'A'; //创建一个套接字 sockfd = socket(AF_INET , SOCK_STREAM , 0); //根据服务器的情况给套接子命名 // address.sun_family = AF_UNIX; // strcpy(address.sun_path , "server_socket"); address.sin_family = AF_INET; address.sin_addr.s_addr = inet_addr("127.0.0.1"); address.sin_port = 7777; len = sizeof(address); //将我们的套接字连接到服务器的套接字 result = connect(sockfd , (struct sockaddr*)&address , len); if(result == -1){ perror("oops: client1"); exit(1); } //现在可以对套接字进行读写操作啦 write(sockfd , &ch , 1); read(sockfd , &ch , 1); printf("char from server= %c\n" , ch); close(sockfd); return 0; }
服务器端:
#include <iostream> #include<sys/types.h> #include<sys/socket.h> #include<stdio.h> #include<sys/un.h> #include<unistd.h> #include<stdlib.h> #include<netinet/in.h> #include<arpa/inet.h> using namespace std; int main() { int server_sockfd , client_sockfd; int server_len , client_len; struct sockaddr_in server_address; struct sockaddr_in client_address; //删除以前的套接字,wier服务器创建一个未命名的套接字 unlink("server_socket"); server_sockfd =socket(AF_INET , SOCK_STREAM , 0); //命令套接子: // server_address.sun_family = AF_UNIX; // strcpy(server_address.sun_path , "server_socket"); server_address.sin_family = AF_INET; server_address.sin_addr.s_addr = inet_addr("127.0.0.1"); server_address.sin_port = 7777; server_len = sizeof(server_address); bind(server_sockfd , (struct sockaddr*)&server_address , server_len); //创建一个连接列队,开始等待客户端进行连接 listen(server_sockfd , 5); while(1){ char ch; printf("server waiting\n"); //接受一个连接 client_len = sizeof(client_address); client_sockfd = accept(server_sockfd , (struct sockaddr*)&client_address , (socklen_t*)&client_len); //对client_sockfd套接字进行读写操作 read(client_sockfd , &ch , 1); ch++; write(client_sockfd , &ch , 1); close(client_sockfd); } return 0; }
相关文章推荐
- Linux socket 初步
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝
- vivi下重新调整分区