Linux下的Socket基础编程(来自Unix网络编程)
来源:互联网 发布:windows 远程连接 mac 编辑:程序博客网 时间:2024/06/06 05:06
1.服务器端:
/* * server.c * * Created on: Nov 20, 2012 * Author: gentoo */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/wait.h>#include <netinet/in.h>#include <arpa/inet.h>#include <time.h>#define SERVER_PORT 8999#define BUFFER 1024int main(int argc, char * argv[]) {int listenfd; //用于监听int connfd; //用于连接struct sockaddr_in seraddr; //socket的地址信息结构体char buff[BUFFER]; //字符串缓冲区time_t ticks;//时间//创建一个监听的socketif ( (listenfd=socket(AF_INET, SOCK_STREAM, 0)) < 0 ){perror("create sock error!\n");exit(1);}//清空地址结构体并设置相应的信息bzero(&seraddr, sizeof(seraddr));seraddr.sin_family = AF_INET; //使用的协议:TCP/IPseraddr.sin_port = htons(SERVER_PORT); //用于监听的端口seraddr.sin_addr.s_addr = htonl(INADDR_ANY); //服务器端的IP地址,INADDR_ANY表示由系统自动获取//进行绑定if ( bind(listenfd, (struct sockaddr *)&seraddr, sizeof(seraddr))< 0 ){perror("bind sock error!\n");exit(1);}//进行监听if ( (listen(listenfd, 4)) < 0 ){perror("listen error!\n");exit(1);}//等待客户端的请求for( ; ; ){//进行阻塞,直到有一个客户端发起请求connfd = accept(listenfd, NULL, NULL);ticks = time(NULL);snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks));//向连接中的socket通道写一些字符串write(connfd, buff, strlen(buff));//关闭该次的连接close(connfd);}return EXIT_SUCCESS;}
/* * Client.c * * Created on: Nov 20, 2012 * Author: gentoo */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/wait.h>#include <netinet/in.h>#include <arpa/inet.h>#define BUFFER 1024#define SERVER_PORT 8999int main(int argc, char * argv[]) {//用于连接的socketint sockfd;//读取了多少个字节int readBytes;//信息的接收char recieve[BUFFER+1];//服务器端的地址结构体信息struct sockaddr_in servaddr;if ( argc != 2 ){perror("IP is required!\n");exit(1);}//创建一个socketif ( (sockfd=socket(AF_INET, SOCK_STREAM, 0)) < 0 ){perror("crate socket error!\n");}//清空地址信息结构体并设置相应的信息bzero(&servaddr, sizeof(servaddr));;servaddr.sin_family = AF_INET; //所用的协议servaddr.sin_port = htons(SERVER_PORT); //所要连接到服务器的端口号//将参数argv[1]的字符串转化为IP地址if ( (inet_pton(AF_INET, argv[1], &servaddr.sin_addr)) <= 0 ){perror("IP transform error!\n");exit(1);}//进行连接if ( (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr))) < 0 ){perror("connected error!\n");exit(1);}//读取服务器端发送的信息并将其输出到stdout中while ( (readBytes=read(sockfd, recieve, BUFFER)) > 0 ){recieve[readBytes] = 0;if ( fputs(recieve, stdout) == EOF ){fprintf(stdout, "fputs error!\n");}}if ( readBytes < 0 ){perror("read error!\n");}return EXIT_SUCCESS;}
- Linux下的Socket基础编程(来自Unix网络编程)
- Unix/Linux环境下的Socket编程
- Unix/Linux环境下的Socket编程
- Unix/Linux环境下的Socket编程
- 【Unix 网络编程】TCP Socket 编程基础(0)
- Linux/Unix网络编程指南(Socket 编程)
- Linux/Unix网络编程指南(Socket 编程)
- Unix/Linux 编程:网络编程之一 Socket
- 网络编程UDP的socket编程实现(linux下)
- Linux网络编程一步一步学-网络编程函数说明-来自“永远的UNIX”
- Unix网络编程 之 socket基础
- 来自Unix/Linux的编程启示录
- 来自Unix/Linux的编程启示录
- linux下的socket网络编程
- Linux下的Socket基础编程(2)
- linux下的socket基础编程
- linux下网络socket编程(一)
- Linux下socket网络编程
- asp.net会员注册与登陆
- Spring 学习手札(三)BeanFactory与ApplicationContext的区别
- javascript的一点笔记
- java经典代码
- struts2表单提交action路径传参数不成功
- Linux下的Socket基础编程(来自Unix网络编程)
- RSync
- 黑马程序员—SQL复习篇
- WIN7 安装VC6.0
- 数据结构学习(三)——单链表的操作之查找、删除、插入。
- 黑马程序员—ASP.net中多线程
- POJ 1256 Anagram
- 设计模式C++学习笔记之四(Multition多例模式)
- GUI 剖析之实现窗口显示在Z轴最上方