快速业务通道

基于Socket的Java网络编程集粹 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24

基于Socket的Java网络编程集粹

时间:2010-04-27

其实,简单的分析一下,就可以看出客户和服务通讯的主要通道就是Socket本身,而服务器通过accept方法就是同意和客户建立通讯.这样当客户建立Socket的同时。服务器也会使用这一根连线来先后通讯,那么既然如此只要我们存在多条连线就可以了。那么我们的程序可以变为如下:

那么下面的问题是如何使用线程.首先要做的事情是创建线程并使得其可以和网络连线取得联系。然后由线程来执行刚才的操作,要创建线程要么直接继承Thread要么实现Runnable接口,要建立和Socket的联系只要传递引用就可以了.而要执行线程就必须重写run方法,而run方法所做的事情就是刚才单线程版本main所做的事情,因此我们的程序变成了这样:

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 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();   }   }   }

客户端代码:

import Java.net.*; import Java.io.*; public class Client{ static Socket Server; public static void main(String[] args) throws Exception { Server=new Socket (InetAddress.getLocalHost(),5678); BufferedReader in=new BufferedReader(new InputStreamReader(Server.getInputStream())); PrintWriter out=new PrintWriter(Server.getOutputStream()); BufferedReader wt=new BufferedReader(new InputStreamReader(System.in)); while(true) { String str=wt.readLine(); out.println(str); out.flush(); if(str.equals("end")) { break; } System.out.println(in.readLine()); } Server.close(); } }

这段程序是接受客户的键盘输入,并把信息输出到服务端。并把"end"作为退出的命令

以上程序完成了两台计算机的简单通信。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号