学习目的
初步了解网络编程的概念和简单使用
学习过程
大致阅读了一下关于网络编程的知识,进而以实战来反复练习所掌握的具体编程内容。
技术
1.基础知识:
1)网络编程:在两台不同的计算机之间传递数据
举例:qq聊天、新闻app(刷新界面就有数据)打开浏览器(网页 www.baidu.com)
2)客户端与服务器端
1>客户端:手机app、浏览器、qq --->(操作数据平台)
2>服务器端:存储/处理数据 --->(数据集散平台)
3)谈谈URL:url(URL)地址:统一的资源定位
用一个例子来说明:http://www.baidu.com/search?code=android&type=1
-》http/https:传输协议 Tcp/IP
-》www.baidu.com:域名->表示一台网络中的电脑
-》ipv4 ipv6 地址:唯一标识一台网络中的计算机
-》32位:四个部分每个是八个字节 10.129.26.215
-》DNS服务器:域名解析 将www.baidu.com类型的域名解析为对应的ip地址
-》search 对应的后台程序文件 用 php java jsp 来进行后台开发
-》“?”表示运行这个程序需要传递的参数
-》code = android code是服务器端规定的字段
-》“&” 如果有多个参数使用&符号链接
4)电脑,你的名字!
1>ip地址:唯一标识某一台电脑
2>端口号:唯一标识这台电脑上的某一个程序(进程)
5)数传输协议:TCP/IP协议
1>TCP:面向链接的 安全的
2>UDP:面向无连接的 不安全 但是快
实现网络中的数据传输:Socket实现 -> 套接字
-》Socket:客户端
-》ServerSocket:服务器端
2.实战:模拟聊天器
我们先看看效果:
这个程序模拟的是客户端和服务器之间的简单“聊天”,首先从客户端终端键入“服务器,你好哇!我是客户端!”,服务器接收到,并在服务器终端打印出来;服务器端键入数据,客户端接收也是如此过程。
具体代码如下:
服务器端的代码,首先创建socket套接字,与客户端相连;然后在主线程中实现“通过终端向客户端写入数据”功能;在子线程中实现“从客户端读入数据”功能。
客户端代码的实现类似于服务器端,不过上图代码箭头所示是向服务器写入数据中的输出流,这和服务器端中的实现不同(其实也可以相同)。我发现如此用,在写出数据时就得像上图圈中所示,三句并用才能实现功能了,仅作提醒。因为这两者区别在于:在BufferedWriter中,write()要输出换行标识,要调用flush()刷新缓冲区;而PrintStream直接调用输出方法即可。
感悟
经过对网络编程的简单学习,我觉得其实以前觉得复杂的通信交互也就这么回事,远没有想象中的那么深奥晦涩。而且上手轻松,思路清晰,趣味无穷。直至今天的实战项目完成后,我觉得前面若干天的学习都是值得的,有意思的东西来了。”编程,以指尖改变世界!“——作者按。