上机实践10 JAVA 中的网络编程
java上机实验总结

java上机实验总结
Java上机实验总结
在本次Java上机实验中,我主要完成了以下任务:
1. 编写一个简单的Java程序,实现两个整数的加法运算。
2. 编写一个Java程序,实现一个简单的计算器,可以进行加、减、乘、除四种基本运算。
3. 编写一个Java程序,实现一个简单的文本编辑器,可以打开、保存和编辑文本文件。
4. 编写一个Java程序,实现一个简单的网络聊天室,可以让用户发送和接收消息。
在实验过程中,我遇到了一些问题,比如在实现计算器程序时,我遇到了浮点数精度问题,导致结果不准确。
后来通过查阅资料,我了解了Java中浮点数的精度问题,并找到了解决方法。
通过本次实验,我深入了解了Java编程语言的基本语法和面向对象编程思想,并且提高了自己的编程能力和解决问题的能力。
同时,我也认识到了团
队合作的重要性,因为在实际开发中,需要多人协作才能完成一个完整的项目。
在未来的学习中,我将继续深入学习Java编程语言,并尝试解决更复杂的问题。
同时,我也希望能够与更多的同学一起合作,共同进步。
Java网络数据库编程及其应用的研究报告

Java网络数据库编程及其应用的研究报告Java是一种广泛应用于开发网络应用程序的高级编程语言。
Java的网络数据库编程主要包括使用Java API连接到数据库、执行SQL语句、获取查询结果以及管理数据库连接和事务等。
在实际应用中,Java网络数据库编程被广泛应用于各种互联网应用程序和企业级应用程序中,如在线商城、客户关系管理系统、金融业务系统等,具有很高的实用性和经济效益。
Java连接数据库的方法主要包括使用JDBC、Hibernate、MyBatis等工具。
其中,JDBC(Java Database Connectivity)是Java语言的一种标准数据库访问API,其可以使Java应用程序通过统一的接口与各种关系型数据库进行交互。
JDBC可以通过驱动程序的方式连接到数据库,驱动程序根据不同的数据库厂商提供不同的jar包。
在连接到数据库后,Java程序可以执行各种SQL语句,如查询、插入、更新操作等。
同时,为了提高程序的运行效率,Java程序也可以使用连接池技术来管理数据库连接,避免频繁的连接和断开造成的性能问题。
除了JDBC之外,常用的还有ORM框架。
ORM(Object Relational Mapping)可以将数据库表映射到Java对象,将操作数据库的过程变成操作Java对象,使得程序更具有面向对象的特点,并且可以减少开发时间和代码量。
Hibernate是一个开源的ORM框架,它可以连接到不同的数据库,并提供了丰富的透明化对象检索功能,支持事务管理和缓存机制。
MyBatis是另一种流行的ORM框架,它可以将SQL语句和Java代码分离,并提供了优秀的映射功能,使得查询条件和结果映射更加方便、简单。
Java网络数据库编程在实际应用中有着广泛的应用。
例如,在在线商城中,Java程序需要连接到数据库,获取商品信息、购物车和订单数据等。
通过Java程序和数据库之间的交互,可以使用户快速浏览和购买商品,且数据的更新和查询也变得更加方便和稳定。
自考Java程序设计一(第10章网络与数据库编程基础)

3
1、网络基础知识
Ø Ø Ø Ø
TCP(传输控制协议)是面向连接的、可靠的点对点的传输协议。 UDP(用户数据报协议)是无连接的不可可靠的传输协议。 IP是网络层协议,实现按IP地址的网络路由的功能。 IP地址:标识计算机等网络设备的网络地址,由四个8位的二进制数组成,中 间以小数点分隔。如:166.111.136.3, 166.111.52.80 主机名(hostname):网络地址的助记名,按照域名进行分级管理。如 服务类型(service):网络的各种服务。 如:web服务, ftp服务, smtp服务, Telnet 服务等
8
Java网络程序设计支持机制
Java网络应用系统
支持URL的类 支持Socket通信的类
•利用URL访问网络资源 •利用Socket通信
网 络
Java网络程序设计支持机制
• Ø Ø
支持网络通信的类在包中。 URL, URLConnection, Socket, ServerSocket ,使用TCP实现网络通信。 DatagramPacket, DatagramSocket, MulticastSocket 支持 UDP 通信方式。
Ø
网络进程:就是网点机(连入网络的计算机)上运行的程序。 网络进程在通信协议中用端口(port)标识,而它驻留的网点机则用其IP地址或域 名来标识。
Ø Ø
通信协议指网络进程之间的通信必须遵循预定的规则。 TCP/IP是一组在Internet网络上的不同计算机之间进行通信的协议的总称,它由 应用层的HTTP、FTP、SMTP和传输层的TCP及网络层的IP等一系列协议组成。
第10章
网络与数据库编程
本章重点
Ø支持JAVA程序访问网上资源的类及其方法 Ø网络编程应用 Ø支持Java程序与数据库连接的类及其方法 Ø支持Java程序的数据表查询、数据记录修改 和插入的类及其方法 46389) 欢迎❤加入...欢迎❤交流...止不住的惊喜等 着你.........
java网络编程步骤

TCP 客户端编程步骤:1、建立网络连接:客户端网络编程的第一步都是建立网络连接。
在建立网络连接时需要指定连接到的服务器IP 地址和端口号。
建立完成后,会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据的交换了。
2、交换数据连接建立以后,可以通过这个连接交换数据。
交换数据一般会按照“请求-响应”模式进行,即有客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器就不主动响应。
根据逻辑需要,可以进行无限次的数据交换。
3、关闭网络连接在数据交换完成以后,关闭网络连接,释放程序占用的系统资源客户端编程步骤如下图所示:TCP 服务器端的编程步骤:1、监听端口服务器端属于被动等待连接,所以服务器端启动以后,只需要监听本地计算机的某个固定端口即可。
这个端口就是服务器端开放给客户端的端口,服务器端程序运行的本地计算机的IP 地址就是服务器端程序的IP 地址。
2、获得连接当客户端连接到服务器是,服务器端就可以获得一个连接,这个连接包含客户端的信息,例如客户端IP 地址等,服务器端和客户端也通过该连接进行数据交换。
一般在服务器端编程中,当获得连接时,需要开启专门的线程处理该连接,每个连接都由独立的线程实现。
3、交换数据ClientSocket(host,port#)试着连线OutputStreamInputStreamSocket.close()1)、指定服务器端的位置与通信端口以建立连接Socket s1=new Socket(“172.0.0.1”,5432);2)、通过Socket 对象取得输出流,以便通过输出流,取得来自服务器端得数OutputStream out =s1.getOutputStream();通过Socket 对象取得输出流串连接起来,以便通过输出流,将数据传送至客户端InputStream in =s1.getInputStream();3)、关闭连接s.close();服务器端通过获得的连接进行数据交换。
利用Java进行网络编程

服务 。在 该 方式 下 ,通 信双 方 必须 创建
一 个 联接 过 程并 建立 一 条通 讯链 路 , 以
后的网络通信操作完全在这 一对进程之 间
进行 ,通 信 完毕 关 闭此联 接 过程 。使 用
无联 接 l方式 时其 系统 开销 比冗联接 方式
小 ,但通 信 链路 提供 了不 口『靠 的数据 报
Socket服 务 器 :以 ServerSocket建 立 服 务 器端 S O C k e t程 序 ,并 分 别 以 DataInputStream与 Data0utputStream处 理 客户端 的 沟通 。如 系统 中有 独立 的数
据库服务器 ,则Socket服 务器 与数据库服
利用 J a v a进行网络编程
奉之讨论 了sock自{ 盹.删。。 阐述了使用 JAVA.语
言璃写基于客户。/赢 务器模式的网络通信程
序的方法
。a抛 。;鹃 蝽 l¥oe
This aPtfc倍 discus ̄d the socket mechanJsm, &nd
ela,bor+- ̄l胁 to 协B赫v击program j hasod On the CUStomer/W efl旃
维普资讯
中国科技信息 2oO6年第 7期 CHINA SCIENCE AND TE ̄ OGY INFORMATION Apt.2006
本论 文受安 徽省教 育 厅 “关于 2 0 0 6年 安徽 省 高等 学校 省级 自然 科学研 究项 目” 的资助 项 目批准 号为 2006KJO92B
J。。 ! implements Runnable{
:
private ServerSocket
JAVA网络编程

第8章Java网络编程北京邮电大学宽带网中心焦利1第8章网络编程•8..1 Java与internet•8.2 使用URL•8.3 访问cgi•8.4 URL连接•8.5 Socket•8.6 数据报•8.7 小结28.1 Java与网络•Java语言取得成功的领域之一就是网络•(其他语言)数页代码---->(Java)一条语句•TCP/IP(传输控制协议/网间协议)是internet的主要协议,定义了计算机和外设进行通信所使用的规则(应用层,传输层,网络层,链路层).•大多数基于internet的应用程序被看作TCP/IP协议的上一层. 如: ftp, http, smtp, pop3, telnet, nntp等•IP地址:TCP/IP网络中的每台计算机都有唯一的地址--IP地址.•在Java中,有一个用来存储internet地址的类叫InetAddress.38.1 Java与网络•例:获取本机的IP地址import .*;public class getLocalHostTest{ public static void main(){ InetAddress myIP=null;try {myIP=InetAddress.getLocalHost();}catch{UnknowHostException e){}System.out.println(myIP);}}创建inetAddress类不用构造函数(不用new)48.1 Java与网络下面的例子演示java如何根据域名自动到DNS 上查找IP地址(与DNS服务器的连接减至一行) import .*;public class getIP{ public static void main(String args[]){ InetAddress bupt=null;try{ bupt=InetAddress.getByName(“”);}catch(UnknowHostException e) {}System.out.println(bupt); }}58.1 Java与网络•Java提供的网络功能有三大类: URL, Socket, Datagram.•URL是三大功能中最高级的一种,通过URL Java 程序可以直接送出或读入网络上的数据.•Socket是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道.•Datagram是更低级的网络传输方式,它把数据的目的记录在数据包中,然后直接放在网络上.69public boolean action(Event evt, Object arg){ try{String line;String str=textfield.getText();url=new URL(str);data=new DataInputStream(url.openStream ());while((line=data.readLine ())!=null){textarea.appendText(line); }data.close();}catch(MalformedURLException me){System.out.println("Error URL");}catch(IOException ie){System.out.println("Error IO");}return true;}8.3 访问cgi•cgi(公共网关)程序可以用任何一种变成语言来写.•cgi将web与外部程序连接起来(数据库查询等)•cgi程序要放在指定的目录下cgi-bin目录.•cgi通常以GET或POST接收数据,128.3 访问cgi•从小应用中运行CGI程序(GET)Socket runcgi=newSocket(“”,80);OutputStreamos=runcgi.getOutputStream();PrintStream ps=new PringtStream(os);ps.println(“GET/cgi-bin/testcgi?arg1=val1& args2=val2&arg3=val3”);•http://<机器名>/<cgi程序路径>?<查询串>138.3 访问cgi•get方法把数据作为命令行中的参数传递给此cgi(适用于少量参数的情况)•Java cgi程序通过main方法的串参数接受命令行.•C cgi程序通过访问环境变量中的查询串QUERY_STRING,来获得查询串中的信息.•例如在C程序中: char *str;•str=getevn(QUERY_STRING);148.3 访问cgi•从小程序中运行CGI程序(post)•post方法通过标准输出向cgi传送参数(适合参数较多的情况)•用post方法要有数据输出流•Socket runcgi=new Socket(“”,80);•建立socket连接•DataOutputStream ds=runcgi.getOutputStream();•建立输入流•ds.println(“POST/cgi-bin/guestbook.pl”);•运行cgi程序168.3 访问cgi•通知发送的数据类型•ds.println(“Content-type:plain/text”);•通知发送的数据长度•String data=“Hello world”•ds.println(“Content-length”+data.length+”\n”);•发送数据•ds.println(data);178.3 访问cgi•cgi接收post方法送来的数据,就像从标准输入读数据一样.•getchar();gets();(C语言的情况)(要建立数据流)•cgi返回数据时要指明数据类型等信息:•printf(“Content-type:text/plain\n\n”);•或printf(“Content-type:text/html\n\n”);•或printf(“Content-type:image/gif\n\n”);•cgi规定服务器与外部程序交换信息的协议.188.4 URL连接•URL双向通信(URLConection)•URLConnection是一个一http为中心的类1. 建立连接URL url=new URL(“/”);URLConnection con=url.openConnection(); 2. 向服务器端送数据PrintStream outStream=newPrintStream(con.getOutputStream());outStream.println(string_data);208.4 URL连接•URLConnection同时支持get和post两种机制一般的格式.•缺省情况下位post method方式•URL和URLConnection的区别在于前者代表一个资源的位置,后者代表一种连接•下面的例子中Java程序访问cgi程序,并传给它10个数据,cgi程序胡接收后,排序,并传送回来.•连接的建立、数据流的建立、java如何发数据、如何接收数据、cgi程序如何发送和接收22238.4 URL 连接import java.io.*; import .*;public class test_cgi{public static void main(String[] args) throws Exception { URL url = newURL ("/~wangqb/cgi-bin/test.cgi"); URLConnection connection = url.openConnection(); connection.setDoOutput(true);PrintStream out = newPrintStream(connection.getOutputStream());out.println("0123456789");out.close();8.4 URL连接DataInputStream in = new DataInputStream(connection.getInputStre am());String inputLine;while ((inputLine= in.readLine()) != null) System.out.println(inputLine);System.in .read ();in.close();24258.4 URL 连接#include "stdio.h"main(){ int array[10]; int i,j,k;printf("Content-type:text/plain \n\n ");for(i=0;i<=9;i++)array[i]=getchar();//read data from InputStreamfor(i=0;i<=8;i++){ for(j=i;j<=9;j++){ if(array[i]<array[j]){ k=array[j]; array[j]=array[i]; array[i]=k; }}}printf("\nOutput number!\n");for(i=0;i<=9;i++){ printf("%c",array[i]); } //write data to OutputStream }8.5 Socket•在服务器端通过指定一个用来等待的连接的端口号创建一个ServerSocket实例.•在客户端通过规定一个主机和端口号创建一个socket实例,连到服务器上.•ServerSocket类的accept方法使服务器处于阻塞状态,等待用户请求•Socket类和ServerSocket是基于TCP协议的,TCP协议提供64个端口,256以内位保留端口.288.5 Socket•在本地机器上测试网络程序用回送地址Socket socket=newSocket(“127.0.0.1”,2525);•如果网络的一端已经关闭,另一端读到null.•建立socket连接后,还应该建立输入输出数据流.298.5 Socket•下面的例子演示一个简单的服务器与客户的交互,即服务器等待,客户访问,相互通一次信息.31348.5 Socketps=new PrintStream(clientSocket.getOutputStream());dis=newDataInputStream(clientSocket.getInputStream());创建服务器(端口号)定义数据成员服务器等待网络连接建立socket 流向客户发出登录要求ps.println("login:"); ps.flush();358.5 Socketps.println("login sucessful"); ps.flush();System.out.println(username+" has logged off");}读客户端信息创建服务器(端口号)定义数据成员服务器等待网络连接建立socket 流向用户发出登录要求通知客户连接完毕if ((username=dis.readLine())==null ){System.out.println("readLine returned null");System.exit(1); }System.out.println("Username:"+username);37. 8.5 Socket •.System.out.println(input.readLine());创建Socket 实例定义数据成员建立socket 流读socket 流(看到提示)System.in.read(bArray);String s=new String(bArray,0);output.println(s);从键盘上读送用户名送给服务器端关闭流socket.close();input.close();output.close();System.out.println("Done");System.out.println(input.readLine());System.out.print("Logging off...");读服务器反馈438.5 Socket public static void main(String args[]){ServerSocket serverSocket=null;try{serverSocket=new ServerSocket(1111);}catch(Exception e){System.out.println(”Error”+e);System.exit(1);}while(true){Socket clientSocket=null;System.out.println("waiting for users...");try { clientSocket=serverSocket.accept();}catch(IOException e){System.out.println("accept failed:"+e);}new serverThread(clientSocket ).start(); }}8.6 Datagram•TCP提供高可靠性服务,适用于一次要传输交换大量报文的情况,信道上传递的包不需要源地址和目的地址•UDP提供高效率服务,适用于依次传输交换少量报文的情形(如数据库查询),每个数据包要包含目的地址和端口号.•数据报文的使用以包为中心:打包,拆包. •包支持两种不同的在网络上送数据的方法:一般套接字和数据报文套接字.50。
Java网络编程技术(Socket编程)ppt_OK

20
• 从上面所描述的过程可知:客户与服务器进程的作用是非对称的,因此 编码不同。服务进程一般是先于客户请求而启动的。只要系统运行,该 服务进程一直存在,直到正常或强迫终止。
21
7.2.2 套接字(Socket)概念
• 数据在Internet中是以有限大小的分组的形式传输的。一个分组是一个数 据报,包括首部和负载。首部包含目的的地址和端口、源地址和端口以 及用于保证可靠传输的各种其他管理信息。负载包含数据本身。
• 但由于分组长度有限,通常必须将数据分解为多个分组,在目的地再重 新组合。
然后再生成一个单独的TCP连接用于数据传输。FTP主要提供文件共享、支持间 接使用远程计算机、使用户不因各类主机文件存储器系统的差异而受影响、可 靠且有效的传输数据等功能。
10
• (3)SMTP(简单邮件传输协议) • SMTP支持在因特网上传递电子邮件,用于可靠且有效的数据传输。它保
证把各种类型的电子邮件通过这一协议从一台邮件服务器发送到另一台 邮件服务器上。 • (4)DNS(域名服务) • DNS提供域名到IP地址的转换,允许对域名资源进行分散管理。
14
C/S模式
• 在C/S模式下,客户向服务器发出服务请求,服 务器接收到请求后,提供相应的服务。其工作方 式可通过现实生活中一个例子来说明。在一个酒 店中,顾客向服务员点菜,服务员把点菜单通知 厨师,厨师按点菜单做好菜后让服务员端给顾客, 这就是一种C/S工作方式。如果把酒店看作一个 系统,服务员就是客户端,厨师就是服务器,这 种系统分工和协同工作的方式就是C/S的工作模 式。
如何使用Java创建简单的网络应用程序

如何使用Java创建简单的网络应用程序1. 网络应用程序简介网络应用程序是一种通过互联网或局域网进行通信和数据交换的软件应用。
它可以基于客户端-服务器模型,也可以是对等模型。
Java是一种广泛使用的编程语言,具有优秀的网络编程能力,可以用于开发各种类型的网络应用程序。
2. Java网络编程基础Java提供了一系列标准类库和API,用于简化网络应用程序的开发。
其中最核心的类是包中的Socket和ServerSocket类。
Socket类代表一个客户端,可以向服务器发送请求和接收响应。
ServerSocket类则用于创建服务器端监听特定端口,并接受客户端的连接请求。
3. 创建简单的客户端首先,我们需要创建一个基本的客户端来连接服务器。
以下是一个使用Socket类创建简单客户端的示例代码:```javaimport java.io.IOException;import java.io.OutputStream;import .Socket;public class SimpleClient {public static void main(String[] args) {String serverAddress = "localhost";int serverPort = 8888;try (Socket socket = new Socket(serverAddress, serverPort)) { OutputStream outputStream = socket.getOutputStream(); String message = "Hello, Server!";byte[] bytes = message.getBytes();outputStream.write(bytes);outputStream.flush();} catch (IOException e) {e.printStackTrace();}}}```在该示例中,我们使用Socket类创建一个与服务器的连接,并获取输出流。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【代码 1】: new DatagramSocket(1234); 【代码 2】: pack.getAddress(); 【代码 3】: new DatagramPacket(b,n,address,5678); 【代码 4】: new DatagramSocket(); 【代码 5】: mailSend.send(data); 【代码 6】: new DatagramPacket(end,end.length,address,5678); 【代码 7】: new DatagramSocket(); 【代码 8】: mailSend.send(data);
2.模板代码
客户端模板:Client.java
import .*; import java.awt.*; import java.awt.event.*; import java.io.*; class ImageCanvas extends Canvas { Image image=null;
{ ServerSocket server=null; ServerThread thread; Socket you=null; while(true) { try{ server=【代码 1】//创建在端口 4331 上负责监听的 ServerSocket 对象 } catch(IOException e1) { System.out.println("正在监听"); } try{ you=【代码 2】 // server 返回和客户端相连接的 Socket 对象 System.out.println("客户的地址:"+you.getInetAddress()); } catch (IOException e) { System.out.println("正在等待客户"); } if(you!=null) { new ServerThread(you).start(); } else{ continue; } }
import .*; import java.io.*; import java.awt.*; import java.awt.event.*; class Client extends Frame implements Runnable,ActionListener { Button connection;
try{ thread.start();
} catch(Exception ee)
{ text.setText("我正在读取"+url); } } public void run() { try { int n=-1;
area.setText(null); String name=text.getText().trim(); 【代码 1】 //使用字符串 name 创建 url 对象 String hostName=【代码 2】 //url 调用 getHost() int urlPortNumber=【代码 3】 //url 调用 getPort() String fileName=【代码 4】 //url 调用 getFile() InputStream in=【代码 5】 //url 调用方法返回一个输入流 area.append("\n 主机:"+hostName+"端口:"+urlPortNumber+
try{ out.writeObject(text); }
catch (IOException e) { System.out.println("客户离开"); }
}
}
实验 3 基于 UDP 的图像传输
客户端模板:Client.java 答案:
【代码 1】: new DatagramPacket(b,b.length,address,1234); 【代码 2】: new DatagramSocket(); 【代码 3】: mailSend.send(data); 【代码 4】: mailReceive=new DatagramSocket(5678);
{ public void windowClosing(WindowEvent e) { System.exit(0); }
}); } public void actionPerformed(ActionEvent e) {
if(!(thread.isAlive())) thread=new Thread(this);
Socket socket=null; ObjectInputStream in=null; ObjectOutputStream out=null; Thread thread; public Client() { socket=new Socket();
connection=new Button("连接服务器,读取文本区对象"); add(connection,BorderLayout.NORTH); connection.addActionListener(this); thread = new Thread(this); setBounds(100,100,360,310); setVisible(true); addWindowListener(new WindowAdapter()
服务器端模板:Server.java
import java.io.*; import .*; import java.util.*; import java.awt.*; public class Server { public static void main(String args[])
2.模板代码
ReadFile.java
import java.awt.*; import java.awt.event.*; import .*; import java.io.*; public class ReadURLSource { public static void main(String args[])
} } class ServerThread extends Thread { Socket socket;
ObjectInputStream in=null; ObjectOutputStream out=null; String s=null; ServerThread(Socket t) { socket=t;
"包含的文件名字:"+fileName); area.append("\n 文件的内容如下:"); while((n=in.read(b))!=-1) { String s=new String(b,0,n);
area.append(s); } } catch(MalformedURLException e1) { text.setText(""+e1); return; } catch(IOException e1)
{ new NetWin(); } }
class NetWin extends Frame implements ActionListener,Runnable { Button button;
URL url; TextField text; TextArea area; byte b[]=new byte[118]; Thread thread; NetWin() { text=new TextField(20);
服务器端模板:Server.java 答案:
【代码 1】: new ServerSocket(4331); 【代码 2】: server.accept(); 【代码 3】: socket.getOutputStream() 【代码 4】: socket.getInputStream()
2.模板代码
客户端模板:Client.java
{ text.setText(""+e1); return;
} }
实验 2 使用套接字读取服务器端对象
客户端模板:Client.java 答案:
【代码 1】: new InetSocketAddress(address,4331); 【代码 2】: socket.connect(socketAddress); 【代码 3】: socket.getInputStream() 【代码 4】: socket.getOutputStream()
上机实践 10 Java 中的网络编程
实验 1 读取服务器端文件
1.答案:
【代码 1】: url=new URL(name); 【代码 2】: url.getHost(); 【代码 3】: url.getPort(); 【代码 4】: url.getFile(); 【代码 5】: url.openStream();
area=new TextArea(12,12); button=new Button("确定"); button.addActionListener(this); thread=new Thread(this); Panel p=new Panel(); p.add(new Label("输入网址:")); p.add(text); p.add(button);
public ImageCanvas() { setSize(200,200); } public void paint(Graphics g) { if(image!=null)
//address 的 socketAddress 【代码 2】 //socket 建立和 socketAddress 的连接呼叫。
in =new ObjectInputStream(【代码 3】); //socket 返回输入流 out = new ObjectOutputStream(【代码 4】); //socket 返回输出流 thread.start(); } } catch (Exception ee){} } } public static void main(String args[]) { Client win=new Client(); } }