事实上网络编程简单的理解就是两台计算机相互通讯数据而已。对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了。
Java SDK提供一些相对简单的Api来完成这些工作,Socket就是其中之一。
对于Java而言。这些Api存在与Java.net这个包里面。因此只要导入这个包就可以准备网络编程了。网络编程的基本模型就是客户机到服务器模型。简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置,并去建立两者之间的联系。然后完成数据的通讯就可以了。这里提供固定位置的通常称为服务器,而建立联系的通常叫做客户端。基于这个简单的模型,就可以进入网络编程。
Java对这个模型的支持有很多种Api.而这里我只想介绍有关Socket的编程接口。对于Java而言已经简化了Socket的编程接口。首先我们来讨论有关提供固定位置的服务方是如何建立的。Java提供了ServerSocket来对其进行支持。事实上当你创建该类的一个实力对象并提供一个端口资源你就建立了一个固定位置可以让其他计算机来访问你。
以下是引用片段: ServerSocket server=new ServerSocket(6789); |
这里稍微要注意的是端口的分配必须是唯一的。因为端口是为了唯一标识每台计算机唯一服务的。另外端口号是从0~65535之间的,前1024个端口已经被Tcp/Ip 作为保留端口,因此你所分配的端口只能是1024个之后的。
好了。我们有了固定位置。现在所需要的就是一根连接线了。该连接线由客户方首先提出要求。因此Java同样提供了一个Socket对象来对其进行支持。只要客户方创建一个Socket的实例对象进行支持就可以了。
以下是引用片段: Socket client=new Socket(InetAddress.getLocalHost(),5678); |
客户机必须知道有关服务器的IP地址。对于着一点Java也提供了一个相关的类InetAddress 该对象的实例必须通过它的静态方法来提供。它的静态方法主要提供了得到本机IP 和通过名字或IP直接得到InetAddress的方法。
好了,上面的方法基本可以建立一条连线让两台计算机相互交流了。可是数据是如何传输的呢?事实上I/O操作总是和网络编程息息相关的。因为底层的网络是继续数据的。除非远程调用,处理问题的核心在执行上。
否则数据的交互还是依赖于IO操作的。所以你也必须导入Java.io这个包。Java的IO操作也不复杂。它提供了针对于字节流和Unicode的读者和写者,然后也提供了一个缓冲用于数据的读写。
以下是引用片段: BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream())); PrintWriter out=new PrintWriter(server.getOutputStream()); |
上面两句就是建立缓冲并把原始的字节流转变为Unicode可以操作。而原始的字节流来源于Socket的两个方法,getInputStream()和getOutputStream()方,分别用来得到输入和输出。那么现在有了基本的模型和基本的操作工具,我们可以做一个简单的Socket例程了服务方:
以下是引用片段: import Java。io。*; import Java。net。*; public class MyServer { public static void main (String[] args) throws IOException { ServerSocket server=new ServerSocket(5678); Socket client=server.accept(); BufferedReader in=new BufferedReader(new InputStreamReader (client.getInputStream())); PrintWriter out=new PrintWriter(client.getOutputStream()); while(true) { String str=in.readLine(); System.out.println(str); out.println("has receive..."); out.flush(); if(str.equals("end")) break; } client。close(); } } |
这个程序的主要目的在于服务器不断接收客户机所写入的信息只到。客户机发送"End"字符串就退出程序。并且服务器也会做出"Receive"为回应。告知客户机已接收到消息。客户机代码:
以下是引用片段: import Java.net.*; import Java.io.*; public class Client{ static Socket server; public static void main(String[] args) throws Exception { server=new Socket (InetAddress.getLocalHost(),5678); BufferedReader in=new BufferedReader(new InputStreamReader(server。getInputStream())); PrintWriter out=new PrintWriter(server.getOutputStream()); BufferedReader wt=new BufferedReader(new InputStreamReader(System.in)); while(true) { String str=wt.readLine(); out.println(str); out.flush(); if(str.equals("end")) { break; } System.out.println(in.readLine()); } server.close(); } } |
酷爱.
誮訫汏蘿蔔
玄火
SOSO用户
无可
。-Solσ、
传说中de王子
potti
╱ 桳桳~糖↘
梦江南
錵oО殇/tp
信念㊣永恒
夜ㄨ凝
や義℡
。如荼
啊滴耙
ヾ狮子蓙ㄨ
▄︻┻┳═一
1oo﹪啲眞伈
ジ 蛇 ポ
扼杀
м某籹孓`゛
爺⑤⒐s.偀俊
坏壊ヤ孩孓气
じ☆ve*☆*董
NO。one ⒈]
Wǒ諟鉨De誰
ご綠★城浪子
帥気壞尐爺
ヤ〣粉墨彬
灰尘粒/db
ㄨ江ㄨ
Badboy頖縌
〓張芸銘〓
●вμ離
轨迹
じ爻璑ヤ斌ㄞ
;孖
尐o觜亂ロ勿
~!咖马~→帅
ホ頭亽°
佬蔢,0觜/个]
小小天使
惊寂
★饿狼传说★
☆烈★焰☆
轩の皓月/yl
κō你de我
疾风
◆◢心◆亂◢
Lucky
被沉沦绑定
1生有祢!!
牽掱。或魴掱
ぁ僾YOU℡ぁ
wl
ヅ`灬櫻┈ゞ`
99186464
Doraemon
灬ぺо期待ミ
ω耶♀稣★→
`啖莣⒈苆ヤ
/go堃棄фㄨ
饥饿的路途
草☆衣あ坊
__︴VIP/酷█
ㄣ紸蓅ヤ厷宔
┡訫oЮ戀Сb
の隨風追忆の
建娃 /tp
阳光王子
.Mua﹖戲﹎
(_今生今丗.
K.E.Y
° 豬頭禸'
偽何伈侗
相遇的魔咒
夏兲Dê菋噵
┌/╱.訫誶孓
●.Мiss"
☆云淡风轻ツ
月半弯
[夲亾巳冇緀]
我被老婆闹
ˊ嫀夶菽.ˊ
/ty 〆
′Mua.〢﹎寶
/kuk陈浩南
-[莪]/可以,
‘炸炸’帝
风声边界
︶ㄣz.明﹏o
_Di調℡…﹖
高楼望月
互联/moon
★风云★
陳尐楓
团结
‐ 疍/,
LT7318
★BeBe★
懶蟲
殘風ぞ看花敗
♂单眼皮男人
┇嵿級侽孒┇
丶o鲽橆の!﹌
似水流年
SOSO用户
キセ 贝ギ
C.Weltraum
︶ㄣΜ∪sΤ
磁 针
⒎ 爺
︻◣僋翫◢︻
被遗忘的逻辑
。守望幸福の
ゞ氣質發行…
用一生来呵护
〃Styla.
ξ、wO、⒑
海之阔
无情雨
云卷云舒︶ㄣ
爱/xin许
天使de宠儿
窮
╱淚划訫空
+往事随风/mg
瑟瑟男
紫晶少女
☆许/aiq诺☆
/mn丫头
张浩疆
夨踪乆口,
小欢我能行
/aiq悲傷wǒ
《1⒊9》。
网络
.D`.﹎しベo
M.ˊ蓜甪゛-
錑濕
︻╋━━━━
壞壞ぐ不學壞
£幻語☆寂°
SOSO用户
僞裝の堅強
Unique
々爱ギ*
_停芷伈跳
南京旅游
陌生人
爱琴海
Zzヤ愛上伱こ
′Mua.〢﹎波
雨兲仲啲貓兒
夕┓┗颜+?
︷Οo.沴悕
♂冰情雪影♀
●.|к侽紸角
┃┫APP¥
bubishuo
无业游民
╱/.__╋ ﹎
lemon
帝豪五金厂
玲玲^o^
lxdows
→斷情戒愛^-
TOヤ桀
无名
錯過!.
死亡赱吻シ
NuméroUn/ty
掉线掉到崩溃
ˊ(-. J
万信网络
QQ堂
じ☆ve彬
风中密码
烟花
【帥弔煩騲】
|▍`謝幕.ノ
~cui~~cui~~~
/ka李晓东/cy
ゞ 嘰咕╰*
╱7號呦唲圜
花开彼岸
ヽ看尒缠绵み
〆颺颠瘋
缤纷じ☆童年
﹎.偶然
就是不同意
aGaiNsT`華
♂星·願♀
ɑ.﹏纞ゞo瓊
╰ 清汤①
- Knapsack'
ˋ._X.King ?
僾祗*儊軆魇
後來。。。。
の柒玥莳捌&
胡灵杰
寂寞流星
│5.軹z垀祢
消失d天堂
X那個[嗄兲
肥仔
︶圍棋メヾ
痞痞
眼泪
绿色的稻草
ヤ綄媄嘚沍動
/aiq奇迹/aiq
花谢会再开
怺逺等待
绝不转让
丿珄暧伱!~
●、ˊ漁児゛
-·莪啲芯蘾
ァ天亮說晚安
*_.阿里冲ヾ
??????
【缘】`love`
一切OK
{簡單僾x。
簡譂/xin嬡
*尛//]°.●
雙魚座★情
海纳百川
尛楊,
小乐
野狼
痕迹
╳灬寶貝乖乖
补锑锅
尛嘚③蒶z⒈
沙儿
_:バ//兲.後
醉春风
繏择袮.。o
ぃ翳灬0o。
天天向上
毛毛虫
菲亦所丝/mg
-=[S]=-
XD紫江企业
灵魂№永恒
(龅_浩)?!
会游泳的鱼
'皓晗同學﹖
地心引力
﹢﹒Mo!m
.借ぞ過ぺ
冲
*莼灰色.MikO
SOSO用户
足球迷
杨
爱与恨
〆;o蕶薍﹏伈
李成竹
12
ご殘サ戀じ溆
┍路边小贩ぁ
丨ovE灬卩i丶
恋ざ没种说..
-[夶]豬頭 、
达亮
●.莼潶Sè
『微雨尘埃』
;纟吢煭肺ㄋ
儍苽℡暧妳
啖莣⒈苆ヤ_.
Séνèn
え张祎ぇ
:Me.〢餠幹
偽僾ぴ絾淪
シ風残淩度∮
︶ㄣ恋☆魂ㄣ
咗錌
蟲蟲℡
寶兒~ε︶
♂嗳^祢~/xin
·①丗乨ˇ緣
SOSO用户
忘
Cancer飞
*/╱ _、髒噯
浪涛无声
~~为爱而狂
陌上/aiq花开
κiζsヤStǒ
眼泪·无罪
·Rake,
小衛
漠漠輕寒
曾經愛過
{ 夏末。
見鬼拉
☆開鈊 √
百变巨蟹
ツ№大头♀
轻剪の飞扬
∥君君∫£
★風★
゛訫`.兲眞メ
| 嘴対嘴‖
/cy孤独一生
滴血£剑
~明月≈清风~
.!?蒾纞┏ ..
基拉こ和
「-嘘.表吵﹏
SOSO用户
ヾ 楿﹏氺 ▓
只為開訫/am
??Me_囡.孒
ぇ
╰*★.阿璡
eleven
Robert show~
12345678
ㄗs↘灬寵噯.
貝戈→Me
┍ 葬ご戀+●
無情
-Chou。
星辰钻石
镜花水月
_○n!y厷孓..
网癌晚期/v
風.聲
☆沉默づ
☆◎★↑←
平wo一颗真ベ
吴某.
_&ㄗメ零亂Oo
▄▄▄▄▄▄
°┾慧寳
亲亲你亲亲我
靜風聽蒗/mg
㊣☆②⑻經嬡
‘.隔夜﹏.
王じ☆ve子
全部甩翻
★純中國種★
落落飘霖
起风的清晨
ωǒ孓亥Zi愾
(_灬風ぺ絗憶
一片鱼鳞
秋宜
{轉過身}``
陪你去看世界
嬸.啲愛*
謎│╃→阿桑
快楽づ寶呗
﹎冷若寒冰
叨叨゛
㊣゛儍仔﹌╃
①鈊①薏選擇
木時
Vision乄豬豬
印度阿三
…X.’
/love
/dao
^_^冭過忝塡~
翼幻星仪
—≯七夜清风
埋沒41.2%
漫步岁月
┍冰舞笨笨┍
﹎夨惢侽孓_!
oO芭比の公主
猫/cat
听兲甴掵
/tp尐壞疍
雪舞云霓灬
假rǘ铕①兲
亥Ta.[m ]
♂阳光*男孩~
雪/xs痕
爱,直至成伤
电脑部
ゞ寵壞妳ヤo
偸芯賊/se
ㄣ铕點亂グ
┾斷ヂē誸
ヤo﹎纁銥愺|
*﹏繧寶寶℡
第四颗流星
榊 棍
﹎蜡笔尐噺﹎
ahsjadjajdj
朙朙很愛鉨
S&K〉,
春风喜雨桃花
風
俺老大是佛祖