标签:发送 get 3.4 数据打包 nec 域名 receive public idea
解决方法:检查后发现,使用的编码方式不一致,其他源文件使用的是GBK,而运行的Client4使用的是UTF-8,将这个源文件也改为GBK编码,就可以正确运行了。
Q2:运行课本例子4后又运行例子3时,提示以下问题。
解决方法:我猜测可能是运行的例子4堵塞了进程,于是就将前面所有的运行程序都关掉,之后就可以正常运行例子3了。
Q3:运行Java远程调用的相关例子时,出现以下错误
解决方法:IDEA中提示应该将所有类都方法sever包中,但我放进去之后还是不能正常编译,后来我尝试将ClientApplication类也放在sever包中,就可以正常运行了。
URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符,使用URL创建对象的应用程序称作客户端程序。
一个URL对象包含的三个基本信息:协议、地址和资源。
构造方法
public URL (String spec) throws MalformedURLException
public URL(String protocol,String host,String file) throws MalformedURLException
读取URL中的资源:调用InputStream openStream()
方法返回一个输入流。
地址的表示:域名和IP地址
getByName(String s)
将一个域名或 IP 地址传递给该方法的参数 S,获得一个 InetAddress 对象;
public String getHostName()
获取InetAddress对象所含的域public String getHostAddress()
获取InetAddress对象所含的IP地址获取本地机的地址:
可以使用InetAddress类的静态方法getLocalHost()
获得一个InetAddress对象,该对象含有本地机的域名和IP地址。
当两个程序需要通信时,它们可以通过使用Socket类建立套接字对象并连接在一起(端口号和IP地址的组合得出一个网络套接字)。
Socket类的构造方法:
Socket(String host, int port)
参数host是服务器的IP地址,port是端口号。
//建立连接到服务器的套接字对象
try { Socket clientSocket = new Socket("http://192.168.0.78",2010);
} //(IP,端口号)
catch(IOException e) {}
ServerSocket 的构造方法:
ServerSocket(int port)
其中port 是一个端口号。
//建立ServerSocket对象
try{ ServerSocket serverForClient = new ServerSocket(2010);
}//(端口号)
catch(IOException e) {}
//使用accept()方法将客户端和服务器端套接字连接起来
try{ Socket sc = serverForClient.accept();
}
catch(IOException e) {
可以使用方法accept()将客户端的套接字和服务器端的套接字连接起来。
从套接字连接中读取数据与从文件中读取数据有着很大的不同,从文件中读取数据时,所有的数据都已经在文件中了,而使用套接字连接时,可能在另一端数据发送之前,就已经开始读取了。
注意:accept方法也会阻塞线程的执行,直到接收到客户的呼叫。
使用多线程技术
套接字通信基本原则:
套接字是基于TCP协议的网络通信。
UDP的信息传递更快,但不提供可靠性保障,即无法知道数据能否正确到达目的地,也不能确定数据到达目的地的顺序是否和发送的顺序相同。
用DatagramPacket的以下两个构造方法创建待发送的数据包:
DatagramPacket(byte data[],int length,InetAddtress address,int port)
DatagramPack(byte data[],int offset,int length,InetAddtress address,int port)
方法DatagramSocket()
负责发送数据包。
方法receive(DatagramPacket
pack)负责接收数据包。
D类地址:224.0.0.0~224.255.255.255是保留地址
要广播或接收广播的主机都必须加入到同一个D类地址。
D类地址不是用来你代表位置的,即在网络上不能使用D类地址去查找计算机。
RMI是一种分布式技术,使用RMI可以让一个虚拟机上的应用程序请求调用位于网络上另一处虚拟机上的对象。
代理的特点是它与远程对象实现了相同的接口。
存根是一种特殊的字节码,并让这个存根产生的对象作为远程对象的代理,其字节码后缀为"_Stub"。
远程对象必须实现java.rmi包中的Remote接口。
代理的特点是它与远程对象实现了相同的接口
20165318 2017-2018-2 《Java程序设计》第九周学习总结
标签:发送 get 3.4 数据打包 nec 域名 receive public idea
原文地址:https://www.cnblogs.com/sunxiaoxuan/p/8971908.html