unix 服务器篇之基本 Tcp c/s架构
2014-05-21 09:52
253 查看
c/s架构是最为基础的网络构件。 各个平台,各个语言中,socket tcp网络编程最为基本的就是
服务器:
socket() //创建socket
bind() // 绑定地址
listen() // 监听端口
accept() // 接受请求
send()
recv()
客户端:
socket() // 创建socket
connect() // 连接到服务器
send() // 发送消息
recv() //接收消息
代码如下
客户端:
服务器:
socket() //创建socket
bind() // 绑定地址
listen() // 监听端口
accept() // 接受请求
send()
recv()
客户端:
socket() // 创建socket
connect() // 连接到服务器
send() // 发送消息
recv() //接收消息
代码如下
#include "../sock.h" #include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string.h> #include <time.h> #define BUFSIZE 1024 #define LISTENQ 5 int main(int argc, char *argv[]) { int listen_sockfd, client_sockfd; int len; struct sockaddr_in client_addr, server_addr; int sin_size; time_t ticks; char write_buf[BUFSIZE] = { 0 }; char read_buf[BUFSIZE] = { 0 }; listen_sockfd = Socket(AF_INET, SOCK_STREAM, 0); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = INADDR_ANY; server_addr.sin_port = htons(8000); Bind(listen_sockfd, (struct sockaddr *) &server_addr, sizeof(server_addr)); Listen(listen_sockfd, LISTENQ); while (1) { len = sizeof(client_addr); client_sockfd = Accept(listen_sockfd, (struct sockaddr *) &client_addr, &len); inet_ntop(AF_INET, &client_addr.sin_addr, read_buf, sizeof(read_buf)); fprintf(stdout, "connect from %s:\t%d\n", read_buf, htons(client_addr.sin_port)); memset(read_buf, 0, BUFSIZE); if ((len = recv(client_sockfd, read_buf, sizeof(read_buf), 0)) > 0) { read_buf[len] = '\0'; fprintf(stdout, "%s\n", read_buf); fflush(stdout); } ticks = time(NULL); snprintf(write_buf, sizeof(write_buf), "%s", ctime(&ticks)); send(client_sockfd, write_buf, strlen(write_buf), 0); close(client_sockfd); } close(listen_sockfd); return 0; }
客户端:
#include <stdio.h> #include "../sock.h" #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string.h> #define BUFSIZE 1024 int main() { int server_sock; int port = 80; struct sockaddr_in server_addr; char write_buf[BUFSIZE] = { 0 }; char read_buf[BUFSIZE] = { 0 }; server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); server_addr.sin_port = htons(8000); server_sock = Socket(AF_INET, SOCK_STREAM, 0); Connect(server_sock, (struct sockaddr *) &server_addr, sizeof(struct sockaddr)); sprintf(write_buf, "hello"); send(server_sock, write_buf, strlen(write_buf), 0); recv(server_sock, read_buf, BUFSIZE, 0); printf("%s\n", read_buf); fflush(stdout); close(server_sock); return 0; }
相关文章推荐
- 注解高端UNIX服务器之技术
- IBM针对UNIX入门服务器演绎POWER激活计划
- Tru64 UNIX硬盘逻辑卷管理(LSM)基本知识
- linux//unix实用基本命令小全
- UNIX 文件系统基本操作
- ASP.NET 2.0服务器控件开发之基本概念篇
- 关于访问远程服务器的一些基本操作
- 初学者指南:服务器基本技术名词
- IBM 刀片服务器将换装高性能芯片运行 Unix
- UNIX基本概念和操作
- UNIX下DNS服务器之创建篇(下)
- SQL服务器内存有两种基本管理方法:动态分配和静态分配
- UNIX/EMAIL/FTP 基本指令
- UNIX下DNS服务器之创建篇
- Unix中存储管理的一些基本概念
- 谈IBM UNIX服务器的技术优势
- linux/unix实用基本命令完整版
- UNIX基本概念介绍