32 Java网络编程Word下载.docx

上传人:b****2 文档编号:3224291 上传时间:2023-05-01 格式:DOCX 页数:13 大小:763.38KB
下载 相关 举报
32 Java网络编程Word下载.docx_第1页
第1页 / 共13页
32 Java网络编程Word下载.docx_第2页
第2页 / 共13页
32 Java网络编程Word下载.docx_第3页
第3页 / 共13页
32 Java网络编程Word下载.docx_第4页
第4页 / 共13页
32 Java网络编程Word下载.docx_第5页
第5页 / 共13页
32 Java网络编程Word下载.docx_第6页
第6页 / 共13页
32 Java网络编程Word下载.docx_第7页
第7页 / 共13页
32 Java网络编程Word下载.docx_第8页
第8页 / 共13页
32 Java网络编程Word下载.docx_第9页
第9页 / 共13页
32 Java网络编程Word下载.docx_第10页
第10页 / 共13页
32 Java网络编程Word下载.docx_第11页
第11页 / 共13页
32 Java网络编程Word下载.docx_第12页
第12页 / 共13页
32 Java网络编程Word下载.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

32 Java网络编程Word下载.docx

《32 Java网络编程Word下载.docx》由会员分享,可在线阅读,更多相关《32 Java网络编程Word下载.docx(13页珍藏版)》请在冰点文库上搜索。

32 Java网络编程Word下载.docx

Socket通信模型

Socket编程的四个基本步骤

编写一个服务器程序:

ServerSocket

只要是网络连接都要求有一个端口 

publicServerSocket(intport) 

publicSocketaccept()throwsIOException

通过此方法等待客户端的socket进行访问。

ServerSocket01服务器端代码:

此服务器端的功能非常的简单,就是接收客户端的请求,之后在屏幕上输出哈~

Windows中有一个telnet命令,通过此命令就可以直接连接到服务器了。

客户端收到字符串,同时服务器端显示“客户端回应完毕~~~”

只要是符合网络的协议标准,所有的客户端都可以连接到此服务器端上。

但是一般情况下,很少说直接去使用telnet连接,往往会编写一个客户端。

Socket 

publicSocket(Stringhost,intport)throwsUnknownHostException,IOException 

指定一个主机的IP地址和一个端口

ClientSocket01客户端代码:

验证下效果,和telnet一样哈~

以上代码验证了,程序需要编写两套程序:

·

一个是服务器端 

另外一个是客户端

现在发现所有的代码只是执行一次就完了,那么能不能说执行多次呢?

由我的用户可以自己发出中断的指令。

这样的做法我们可以做一个Socket经典——Echo程序 

用户发什么内容,服务器就会回应什么内容:

EchoServer代码:

import 

java.io.*;

.*;

public 

class 

EchoServer{ 

//此处为了省去处理try...catch直接抛出了异常 

static 

void 

main(Stringargs[]) 

throws 

Exception{ 

ServerSocketserver= 

null;

//输出肯定使用打印流 

PrintStreamout= 

//服务器肯定也要接收输入 

BufferedReaderbuf= 

//1.实例化一个服务器的监听端 

server= 

new 

ServerSocket(9999);

//可以使用一种死循环的方式接收内容 

Socketclient= 

while 

(true){ 

//不断接收内容 

client=server.accept();

//准备好向客户端输出内容 

out= 

PrintStream(client.getOutputStream());

//而且客户端要有输入给服务器端 

buf= 

BufferedReader(new 

InputStreamReader(client.getInputStream()));

//下面先给出一个完整的信息提示 

out.println("

您好!

欢迎光临:

"

);

输入bye表示退出哈~"

//一个用户要发很多的信息 

//接收客户端发送而来的内容 

Stringstr=buf.readLine();

if 

(str==null){ 

//如果str为空就表示退出 

break;

}else{ 

//如果输入的是bye则表示系统退出 

("

bye"

.equals(str)){ 

//可以对用户发来的信息进行回应 

ECHO:

+str);

//进行收尾工作 

out.close();

buf.close();

client.close();

//如果要关闭服务器时可以设置标志 

//server.close();

}

看下效果:

现在我们用telnet连接上去看下效果

输入bye退出连接

同时可以多次连接

典型的包含了输入和输出

EchoClient代码:

EchoClient{ 

//1.连接服务器 

client= 

Socket("

localhost"

9999);

//接收服务器端的输入信息 

System.out.println(buf.readLine());

//之后准备从键盘接收数据 

BufferedReaderin= 

InputStreamReader(System.in));

StringuserInput= 

((userInput=in.readLine())!

=null){ 

//表示有内容进来,要把内容发送到客户端 

out.println(userInput);

//接收服务器端的回应 

in.close();

但是此程序有一个问题,即:

当一个用户操作的时候,其他用户是不能操作的 

程序是单线程的,所以每次只能一个用户访问。

此处如果想解决,则只能使用多线程进行操作。

首先需要编写一个线程的类:

ThreadServer代码:

ThreadServer 

implements 

Runnable{ 

//现在所有的Socket都要归入到一个线程之中 

private 

ThreadServer(Socketclient){ 

this.client=client;

run(){ 

//要不断的接收客户发送来的信息 

Stringinput= 

//通过BufferedReader进行接收 

//有一个输出的对象 

try{ 

InputStreamReader(this.client.getInputStream()));

while(true){ 

//接收发送过来的信息 

input=buf.readLine();

PrintStream(this.client.getOutputStream());

.equals(input)){ 

+input);

this.client.close();

}catch 

(Exceptione){} 

EchoServer01服务器端代码:

EchoServer01{ 

//在此处启动了一个线程 

Thread(new 

ThreadServer(client)).start();

使用telnet测试效果哈~

通过以上代码,可以发现,多线程实际上在服务器上是比较常用的。

服务器=多线程+IO+Socket 

Socket程序实际上是属于TCP程序,是一个稳定的连接

UDP程序:

数据报程序

Send发送端代码:

Send{ 

DatagramSocketds= 

DatagramPacketdp= 

//发送端必须有一个监视的端口 

ds= 

DatagramSocket(9999);

Stringstr= 

;

//发送的内容只能是byte数组 

//接收端端口号是8888 

dp= 

DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("

),8888);

ds.send(dp);

ds.close();

信息已经发送出去了哈~

下面我们再写个接收代码

Receive接收端代码:

Receive{ 

//要有一个空间大小 

byte 

b[]= 

byte[1024];

//ds的监听端口就表示发送端指定好的 

DatagramSocket(8888);

DatagramPacket(b,b.length);

//开始接收 

ds.receive(dp);

System.out.println(new 

String(dp.getData()).trim());

现在我们测试一下哈~首先必须接收端开启着

然后我们运行发送端发送信息

总结 

网络编程在实际中确实使用越来越少,JAVA的主要特点全部集中在了JAVAWEB上了。

只需要了解以下概念即可:

网络程序的分类:

TCP、UDP 

服务器=IO+Socket+Thread

###################################################

本文出自“王乾De技术博客”博客,谢绝转载!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2