无标题文章

文档目的

博主在搭建好的地面与空间通信的模拟通信网络中,A<--->GW1<--->GW2<--->B之间能够顺利ping通,现在要测试是否能建立TCP连接,开始想直接在B上安装apache服务器,然后A上的浏览器输入B的ip地址可以访问B并下载文件,效果如下:



但这样在应用层上是HTTP传输,而且由于对apache内部机制不了解,无法分析传输时的网络层和传输层情况。因此,博主还是倾向于自己用C语言写一个socket通信程序,测试A到B之间的TCP连接和UDP连接,程序设计和实现步骤如下。

环境参数

服务器主机:linux内核版本3.11.0,ubuntu 13.10 amd64
客户端主机:ubuntu 10.04 i386
网关:linux内核版本2.6.27,ubuntu 8.10(这个是转换网关,应用层网关软件要求内核版本是2.6.27,但不运行网关软件的话对于socket通信没有影响)

预备知识

C语言基本语法,socket网络编程基础知识(可以参考点击打开链接 前三章的内容,讲得非常详细),TCP/IP模型

程序设计

在服务器端写一个server.c,包含server一方的socket函数;客户端写一个client.c,包含client一方的socket函数。两边运行实现互通。
但也可以只写一个server.c并在服务器端编译运行,然后在客户端直接利用telnet命令(包括服务器端的ip和端口号)访问服务器端即可完成socket通信。telnet是应用层协议的一种,相对http简单很多,telnet传输应用在socket通信里其实充当了client一方的socket程序的作用,这样几乎减小了一般的工作量。

实现过程

首先,server端编写server.c代码,下面贴上博主自己写的server.c代码:
然后,在终端利用gcc编译,命令为#gcc -c server.c -o server
编译通过后生成server可执行程序,如果运行提示没有权限就用chmod命令添加执行权限,运行server命令为:
./server my_ip dest_ip
比如本地ip设为10.210.0.2,目的ip是192.168.1.2,则输入命令:
./server 10.210.0.2 192.168.1.2
运行完后终端处于阻塞状态,即处于accept()。此时在客户端的终端上键入telnet命令,以我设置的服务器ip和程序中设置的端口号为例,命令为:
telnet 10.210.0.2 8000
现在服务器就可以推送消息给客户端了,在服务器运行一段键入字符串并回车,客户端的终端上就能收到这些字符信息。在程序中的头几行里大家有没有注意到这句
<pre name="code" class="cpp">
sockfd=socket(AF_INET,SOCK_STREAM,0); </pre>

SOCK_STREAM代表程序运行后socket以流式套接字的方式通信,也就是TCP连接。如果你想测试UDP连接,那可以把SOCK_STREAM替换为SOCK_DGRAM,这样socket就会以数据报格式通信。
如果你TCP和UDP连接都成功了做到了,恭喜你,你刚刚迈出了成为网络程序员的第一步!

总结

其实只要有一定的网络理论和C语言知识,socket编程并不难,关键要搞懂通信过程,函数的调用是有顺序的,不能随便编写。当然博主的程序存在交互不强,关闭进程偶尔出错,耦合性太强,运行不方便等缺点,但大方向把握对了后期完善就很简单了。最后,祝各位看官也能轻松学到socket编程知识!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容

  • Socket编程 文档来源 http://www.mamicode.com/info-detail-877996....
    aa疯子aa阅读 154评论 0 0
  • 她,经过近半年的孕育,已初具雏形。 今天,在这个举国欢庆的日子里,揭开她神秘的面纱,来阐述她的点滴。 首先我们来...
    Ma988阅读 1,032评论 1 1
  • 感恩爱人陪我去修手机,本来还想请我看电影。但是我怕带着美看不好就没看。 感恩北辰老邻居在百脑汇上班,帮我找的修手机...
    寸心洁白阅读 151评论 0 1
  • 无限风光浩宇明, 群山奔涌似腾龙。 瀑布飞天涛声涌, 薄雾迷纱漫岭峰。 冉冉旭日绚丽...
    许永杰阅读 417评论 0 0
  • 讲个故事吧 一年前也是这样的一天,操场人声涌动,在日头曝晒下所有人躁动不安。看门大爷死守着时间不放,等待中午十二点...
    聂久欢阅读 253评论 0 0