一篇不错的介绍Java Socket编程的文章
?? ? ?事实上网络编程简单的理解就是两台计算机相互通讯数据而已。对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了。Java SDK提供一些相对简单的Api来完成这些工作,Socket就是其中之一。
对于Java而言。这些Api存在与Java.net这个包里面。因此只要导入这个包就可以准备网络编程了。网络编程的基本模型就是客户机到服务器模型。简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置,并去建立两者之间的联系。然后完成数据的通讯就可以了。这里提供固定位置的通常称为服务器,而建立联系的通常叫做客户端。基于这个简单的模型,就可以进入网络编程。
?? ? ?Java对这个模型的支持有很多种Api。而这里我只想介绍有关Socket的编程接口。对于Java而言已经简化了Socket的编程接口。首先我们来讨论有关提供固定位置的服务方是如何建立的。Java提供了ServerSocket来对其进行支持。事实上当你创建该类的一个实力对象并提供一个端口资源你就建立了一个固定位置可以让其他计算机来访问你。
?
import Java.net.*;import Java.io.*;public class MultiUser extends Thread{ private Socket client; public MultiUser(Socket c) { this。client=c; } public void run() { try { BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream())); PrintWriter out=new PrintWriter(client.getOutputStream()); //Mutil User but can't parallel while(true){ String str=in.readLine(); System。out.println(str); out.println("has receive..."); out.flush(); if(str.equals("end")) break; } client.close(); }catch(IOException ex) { }finally { } } public static void main(String[] args)throws IOException { ServerSocket server=new ServerSocket(5678); while(true) { //transfer location change Single User or Multi User MultiUser mu=new MultiUser(server.accept()); mu.start(); } }}?
我的类直接从Thread类继承了下来。并且通过构造函数传递引用和客户Socket建立了联系。这样每个线程就有了一个通讯管道。同样我们可以填写run方法。把之前的操作交给线程来完成。这样多客户并行的Socket就建立起来了。
?
?
—————————————————–
?
<注>
?
文章来源:赛迪网《一篇不错的介绍Java Socket编程的文章》
?