<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      java編寫TCP方式的通信程序

      [摘要]Java API中封裝了大量的函數,供編寫網絡通信程序時使用.這使得java在網絡方面具有強大的功能.用java編寫TCP方式的通信程序比較簡單,但也有一些問題需要注意.以下為監聽主程序,監聽程序在發現客戶端連接后,啟動一個會話socket線程,以實現實時發送,接收信息和多客戶端同時工作.impo...
      Java API中封裝了大量的函數,供編寫網絡通信程序時使用.
      這使得java在網絡方面具有強大的功能.
      用java編寫TCP方式的通信程序比較簡單,但也有一些問題需要注意.

      以下為監聽主程序,監聽程序在發現客戶端連接后,啟動一個會話socket線程,以實現實時發送,接收信息
      和多客戶端同時工作.
      import java.io.*;
      import java.lang.*;
      import java.net.ServerSocket;
      import java.net.Socket;
      //主程序一直處于監聽狀態,有連接則啟動一個線程進行處理,以實現多個客戶端
      public class listenserve
      {
      private ServerSocket ss;
      private boolean listening=true;
      public listenserve()
      {
        Init();//初始化
        lisn();//啟動監聽
      }
      public void Init()
      {
        try
        {
         ss=new ServerSocket(10015,10);
        }
        catch(IOException ie)
        {
          System.out.println("無法在10015端口監聽");
          ie.printStackTrace();
        }
      }
      public void lisn()
      {
        try
        {
         while(listening)
          new Thread(new dialogserve(ss.accept())).start();
          }
         catch(IOException ie)
         {ie.printStackTrace();}
      }
      public static void main(String args[])
      {
        new listenserve();
      }
      }

      //以下為會話主程序
      應該特別注意,如果客戶端先關閉,會話socket中可能拋出socketexception:connection reset
      這應該在程序中進行處理,這也是較易忽略的問題.
      import java.io.*;
      import java.lang.*;
      import java.net.ServerSocket;
      import java.net.Socket;
      import java.net.SocketException;
      public class dialogserve implements Runnable
      {
      private Socket s;
      private InputStream in;
      private String rev,temp;
      private byte b[];
      private int len;
      public dialogserve(Socket ss)
      {
        s=ss;
        b=new byte[1024];
        try
        {
        in=s.getInputStream();
        }catch(IOException ie)
        {
         ie.printStackTrace();
         }
        rev="";
      }
      public void run()
      {
        try
        {
         while(s.isConnected()==true)
         {
          if((len=in.read(b))!=-1)
          {
           temp=new String(b,0,len);
            rev+=temp;
            System.out.print(rev);
            temp=null;
            Thread.sleep(1000);
          }
         }
         in.close();
         s.close();
         System.out.println("會話socket已斷開!");
        }
        catch(SocketException se)
        {
         System.out.println("客戶端已斷開!");
          System.exit(0);
        }
        catch(IOException io)
        {
         io.printStackTrace();
         System.exit(0);
        }
        catch(InterruptedException ire)
        { ire.printStackTrace();}
      }
      }
      //以下為客戶端主程序
      import java.io.*;
      import java.net.Socket;
      import java.lang.*;
      public class client
      {
      private Socket con;//客戶端連接socket
      private OutputStream out;
      private String sen;
      private byte b[];
      public client()
      {
        clientInit();
      }
      public void clientInit()
      {
        try
        {
         con=new Socket("localhost",10015);
         con.setSoTimeout(10000);
         b=new byte[1024];
         OutputStream out=con.getOutputStream();
         sen="hello serve,以TCP方式發送數據!";
         b=sen.getBytes();
         out.write(b);
         out.flush();
         out.close();
         con.close();
        }
        catch(IOException ie)
        {
         ie.toString();
        }
      }
      public static void main(String args[])
      {
        new client();
      }
      }
      總的來說,以上所列代碼較為簡單,但已基本反映出java編寫簡單tcp通信程序的原理.
      希望各位朋友批評.大家共同學習交流.


      日韩精品一区二区三区高清