服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

Java Socket多线程如何支持服务器模型


发布日期:2020年03月20日
 
Java Socket多线程如何支持服务器模型

Java Socket多线程如何才能更好的使用呢?这就需要我们在有关代码上寻找答案那么接下来我们就来看看有关Java Socket多线程的详细介绍希望大家在看了下文之后有所收获

网络编程的基本模型就是客户机到服务器模型简单的说就是两个进程之间相互通讯然后其中一个必须提供一个固定的位置而另一个则只需要知道这个固定的位置并去建立两者之间的联系然后完成数据的通讯就可以了这里提供固定位置的通常称为服务器而建立联系的通常叫做客户端基于这个简单的模型就可以进入网络编程啦

Java对这个模型的支持有很多种Api而这里我只想介绍有关Socket的编程接口对于Java而言已经简化了Java Socket多线程的编程接口首先我们来讨论有关提供固定位置的服务方是如何建立的Java提供了ServerSocket来对其进行支持事实上当你创建该类的一个实力对象并提供一个端口资源你就建立了一个固定位置可以让其他计算机来访问你ServerSocket server=new ServerSocket();

这里稍微要注意的是端口的分配必须是唯一的因为端口是为了唯一标识每台计算机唯一服务的另外端口号是从~之间的个端口已经被Tcp/Ip 作为保留端口因此你所分配的端口只能是个之后的好了我们有了固定位置现在所需要的就是一根连接线了该连接线由客户方首先提出要求因此Java同样提供了一个Socket对象来对其进行支持只要客户方创建一个Java Socket多线程的实例对象进行支持就可以了Socket client=new Socket(InetAddressgetLocalHost());客户机必须知道有关服务器的IP地址对于着一点Java也提供了一个相关的类InetAddress 该对象的实例必须通过它的静态方法来提供它的静态方法主要提供了得到本机IP 和通过名字或IP直接得到InetAddress的方法

好了上面的方法基本可以建立一条连线让两台计算机相互交流了可是数据是如何传输的呢?事实上I/O操作总是和网络编程息息相关的因为底层的网络是继续数据的除非远程调用处理问题的核心在执行上否则数据的交互还是依赖于IO操作的所以你也必须导入javaio这个包java的IO操作也不复杂它提供了针对于字节流和Unicode的读者和写者然后也提供了一个缓沖用于数据的读写

BufferedReader in=new BufferedReader(new InputStreamReader

(servergetInputStream()));

PrintWriter out=new PrintWriter(servergetOutputStream());

public PrintWriter(OutputStream out)根据现有的 OutputStream 创建不带自动行刷新的新 PrintWriter此便捷构造方法创建必要的中间 OutputStreamWriter后者使用默认字符编码将字符转换为字节

上面两句就是建立缓沖并把原始的字节流转变为Unicode可以操作而原始的字节流来源于Java Socket多线程的两个方法getInputStream()和getOutputStream()方分别用来得到输入和输出那么现在有了基本的模型和基本的操作工具我们可以做一个简单的Java Socket多线程例程了

服务方:

import javaio*;

import *;

public class MyServer {

public static void main(String[] args) throws

IOException{

ServerSocket server=new ServerSocket();

Socket client=serveraccept();

BufferedReader in=new BufferedReader(new InputStream

Reader(clientgetInputStream()));

PrintWriter out=new PrintWriter(clientgetOutputStream());

while(true){

String str=inreadLine();

Systemoutprintln(str);

outprintln(has receive);

outflush();

if(strequals(end))

break;

}

clientclose();

}

}

这个程序的主要目的在于服务器不断接收客户机所写入的信息只到客户机发送End字符串就退出程序并且服务器也会做出Receive为回应告知客户机已接收到消息 以上就是对Java Socket多线程的详细介绍

               

上一篇:MIDP 1.0 HttpConnection类的robust封装

下一篇:Apache Commons Lang 包