Unix网络编程学习 < 一 >
#include "unp.h" int main(int argc , char**argv)
{
int sockfd , n; //sockfd套接字描述符
char recvline[MAXLINE + ];
struct sockaddr_in servaddr; /*sockaddr_in={
* short sin_family; 地址族
* unsigned short sin_port; 端口号,必须采用网络数据格式,可用htons()函数将数字转换为网络数据格式
* struct in_addr sin_addr; Ip地址
* unsigned char sin_zero[8];
*/ if (argc != )
err_quit("usage: a.out <IPaddress>");
if ((sockfd = socket(AF_INET,SOCK_STREAM,)) < )
err_sys("socket error"); bzero(&servaddr,sizeof(servaddr));//将servaddr置0
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons();//将数字转换为网络数据格式
if (inet_pton(AF_INET,argv[],&servaddr.sin_addr) <= )
err_quit("inet_pton error for %s",argv[]);
if (connect(sockfd,(SA *) &servaddr,sizeof(servaddr)) < )
err_sys("connect error"); while ( (n = read(sockfd,recvline,MAXLINE)) > ){// read函数读取服务器的应答,并使用fputs输出结果
recvline[n] = ;
if ( fputs(recvline,stdout) == EOF)
err_sys("fputs error");
}
if (n < )
err_sys("read error"); exit();
}
- 第18行socket函数原型为int socket(int af ,int type , int protocal);
- 用途:根据指定的地址族,数据类型和协议来分配一个套接口的描述字及其所用的资源
- 第24行的inet_pton函数原型为int inet_pton(int af , const char* src , void *dst);
- 用途:将字符串转换为网络地址
- af是地址族,src为来源地址,dst则是接收转换后的数据
- 第26行的connect函数原型为 int connect(int s, const struct sockaddr * name, int namelen);
- 用途:建立与指定socket的连接
- s标识一个未连接的socket,name为指向要连接的套接字的sockaddr结构体的指针,namelen为sockaddr结构体的字节长度
Unix网络编程学习 < 一 >的更多相关文章
- UNIX网络编程学习指南--epoll函数
epoll是select/poll的强化版,都是多路复用的函数,epoll有了很大的改进. epoll的功能 1.支持监听大数目的socket描述符 一个进程内,select能打开的fd是有限制的,有 ...
- UNIX网络编程学习笔记:值-结果(value-result)参数
前言 当把套接口地址结构传递给套接口函数时,总是通过指针来传递的,即传递的是一个指向结构的指针.结构的长度也作为参数来传递,其传递的方式取决于结构的传递方向:从进程到内核,还是从内核到进程. 1.从进 ...
- UNIX 网络编程学习
a.述 书买很久了,好好学习下.O(∩_∩)O 只写程序,原理什么的,先不写了. b.环境 deepin15.4.1 64位 vs code gcc version 6.4.0 20170724 ( ...
- UNIX网络编程--学习日记
今天在学习accept函数的时候,在执行服务器程序的时候,碰到了如下的出错信息: bind error: Address already in use 其原因在于服务器程序使用了13号的端口; 然而在 ...
- Unix网络编程学习笔记之第12章 IPv4与IPv6的互操作性
一. 简单介绍 如果我们本章讨论的主机都是支持双栈的,即支持IPv4地址.也支持Ipv6地址. 我们本次讨论的点:client与server端使用的是不同类型的地址.由于同样类型的地址没什么可讲的. ...
- UNIX网络编程学习(9)--getsockname和getpeername的用法及实例(转)
getsockname和getpeername #include <sys/socket.h>int getsockname(int sockfd, struct sockaddr *lo ...
- UNIX网络编程——ICMP报文分析:端口不可达
ICMP的一个规则是,ICMP差错报文必须包括生成该差错报文的数据报IP首部(包含任何选项),还必须至少包括跟在该IP首部后面的前8个字节(包含源端口和目的端口).在我们的例子中,跟在IP首部后面的前 ...
- 《UNIX网络编程 卷1》之"学习环境搭建"(CentOS 7)
<UNIX网络编程 卷1>的源码可以从www.unpbook.com下载得到.解压之后的目录为unpv13e. 详细步骤 编译 进入unpv13e目录,按如下步骤编译: ./configu ...
- 【Linux/unix网络编程】之使用socket进行TCP编程
实验一 TCP数据发送与接收 [实验目的] 1.熟练掌握套接字函数的使用方法. 2.应用套接字函数完成基本TCP通讯,实现服务器与客户端的信息交互. [实验学时] 4学时 [实验内容] 实现一个服务器 ...
随机推荐
- delphi http请求用到的编码方式
uses HttpEncode: HttpEncode(AnsiToUtf8('***'))
- P1006 换个格式输出整数
这道题相较于上一题来说就简单了许多.看题. 怎么感觉这道题有点类似P1002写出这个数.流程差不多,思路大致是先求出每一位上的数,然后根据 百十个 的顺序输出结果.题目比较简单,不做赘述,贴代码 代码 ...
- Setup Factory删除TODO文件
s1= Shell.GetFolder(SHF_STARTMENUPROGRAMS);s2 = String.Concat(s1, "\\*\\TODO");//将*替换成项目名F ...
- 侯捷C++学习(二)
#include <iostream>using namespace std;class complex{ public: complex (double r= 0, double i = ...
- Python 实现类似range函数
需求:写一个属于你自己的 frange函数,frange与range类似,一样的参数规则,但是每一项必须要是float类型 实现: 注意点,如何判断stop是否有参数传入,这里使用空字符判断,如fra ...
- Django--评论功能实现和用户登录
1.确定实现评论功能的方式 1.第三方社会化评论插件(有言.多说.网易云跟帖等) 优点:可以直接用,紧急时开发快 缺点:评论存储在第三方,第三方挂了就不弄用 2.Django评论库 django-co ...
- 163-PHP 文本替换函数str_replace(四)
<?php $str='Hello world!'; //定义源字符串 $search=array('o','l','w'); //定义将被替换的字符数组 $replace=array('1', ...
- 自定义jqGrid编辑功能,当行获取焦点时编辑,失去焦点时保存
http://www.360doc.com/content/17/0719/15/9200790_672577533.shtml /********************************** ...
- 干货分享:反思Essay写作指南
在众多Essay写作类型中,有一种较为难写的一种类型——反思写作(Reflective Writing),提前熟悉这类写作风格的要求,并且养成反思性写作的习惯,非常有必要!本文小编就给大家说说什么是反 ...
- ACM-售货员难题
题目描述:售货员的难题 某乡有n个村庄(1< n < 20),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0 < s < 1000)是已知的,且A村到B村与B村到 ...