网络编程
Name好难
学习之路~~
展开
-
网络编程初步
看书百遍不如自己写一遍, 动动手,实现以下代码,基本上就很靠谱了,按数序来 —实现最简单的、单独一次连接的tcp服务器,直接socket bind, listen, accept搞定。 客户端不用写,先用 telnet直接连你的server测验。实现简单的tcp客户端,代替第1步使用的telnet,实现和你的服务器的通讯。改写第一步的简单服务器,采用fork方式,多进程条件下,实现多客户端原创 2015-04-22 10:50:47 · 316 阅读 · 0 评论 -
Unix网络编程 学习笔记 1-4章
记录一下网络编程的重点和难点第二章 传输层 TCP UDP2.6 TCP连接的建立和终止2.6.1 三路握手1. 服务器必须准备好接受外来的连接。通常通过调用socket、bind、listen这3个函数来完成,我们称之为被动打开。2. 客户通过调用connect发起主动打开。这导致客户TCP发送一个SYN分节,它告诉服务器客户将在(待建立的)连接中发送的数据的原创 2015-04-24 09:35:43 · 547 阅读 · 0 评论 -
unix网络编程 信号处理
5.9 处理信号SIGCHLD如果子进程被kill后,父进程仍在,子进程变成僵尸进程,这是UNIX的机制,无法改变。这些僵尸进程占用内存,更为严重的是占用进程ID资源,这样导致后面无法fork,因为进程ID是有上限的。父进程需要自己清理这些僵尸进程,父进程可以通过注册SIGCHLD信号,这样可以在子进程被杀死时立刻收到通知,然后执行清理工作(调用wait或waitpid方法)。原创 2015-04-25 16:05:29 · 668 阅读 · 0 评论 -
利用waitpid()的tcpserv
这个版本的tcpserv利用了signal函数来捕捉子进程终止信号SIGCHLD,并利用waitpid()对信号进行处理#include "unp.h"void str_echo(int sockfd){ ssize_t n; char buf[MAXLINE];again: while((n = read(sockfd, buf, MAXLINE)) > 0) Writen原创 2015-05-03 17:05:24 · 330 阅读 · 0 评论 -
TcpClient & TcpServer 第一版
TcpClient & TcpServer 第一版第一版利用fork()产生子进程来处理已连接套接字,能实现并发连接处理,但是缺乏服务器信号处理,只是完成最简单的tcp服务器。tcpserv01.c#include "unp.h"void str_echo(int sockfd){ ssize_t n; char buf[MAXLINE];again: while((n原创 2015-05-03 15:54:34 · 465 阅读 · 0 评论 -
利用select和shutdown的str_cli函数
void str_cli(FILE *fp, int sockfd){ int maxfdp1, stdineof; fd_set rset; char buf[MAXLINE]; int n; stdineof = 0; FD_ZERO(&rset); for( ; ; ) { if(stdineof == 0) FD_SET(fileno(fp), &rset);原创 2015-05-04 12:52:24 · 349 阅读 · 0 评论 -
tcpserv程序select
利用select和poll函数来代替fork产生子进程的方法,可以实线并发连接并且可以减少fork子进程时占用的系统资源,select函数需要一个client[]数组的数据结构来维持多用户的fd,每次有新用户连接和关闭时需要对该数据结构进行更新,而poll函数是维持一个pollfd结构,比select函数方便。select函数版:#include "unp.h"int main原创 2015-05-04 15:15:02 · 332 阅读 · 0 评论 -
TCP & UDP服务器(select和fork)
UDP协议是无连接的不可靠的数据报传输协议,与TCP协议不同的是,它发送数据时不需要调用connect函数(特殊情况也可调用),客户端只需要调用sendto函数给服务器发送数据报,其中必须指定目的地地址作为参数,服务器只需要调用recvfrom函数等待某个数据报的到达。大多数UDP服务器是迭代服务器(iterative server),大多数TCP服务器是并发服务器。每个UDP套接字都有一原创 2015-05-05 14:34:29 · 668 阅读 · 0 评论