歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java TCP入門例子

TCP套接字

Java為TCP協議提供了兩個類:Socket類和ServerSocket類。一個Socket實例代表了TCP連接的一端。一個TCP連接是一條抽象的雙向信道,兩端分別由IP地址和端口號確定。

TCP客戶端

典型的TCP客戶端要經過下面三步:

1.創建一個Scoket實例:構造函數向指定的遠程主機和端口建立一個TCP連接。

2.通過套接字的輸入輸出流(I/O streams)進行通信:一個Scoket連接實例包括一個InputStream和一個OutputStream,它們的用法同於其他Java輸入輸出流。

3.使用Scoket類的close()方法關閉連接。

TCP服務器端

1.創建一個ServerSocket實例,並指定本地端口。此逃接字的功能是偵聽該指定端口收到的連接。

2.重復執行:

a.調用ServerSocket的accept()方法以獲取下一個客戶端連接,基於新建立的客戶端連接,創建一個Socket實例,並由accept()方法返回。

b.使用所返回的Socket實例的InputStream和OutputStream與客戶端進行通信。

c.通信完成後,使用Socket類的Close()方法關閉該客戶端套接字連接。

下面程序示例:

TcpServer.java

package com.iboxpay.tcp;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {
 public static void main(String[] args) throws IOException {
  BufferedReader buffer = null;
  ServerSocket server= null;
  Socket s = null;
  InputStream is = null;
  OutputStream os  = null;
  DataOutputStream dos = null;
  try {
   server = new ServerSocket(8080);
   s = server.accept();
   is = s.getInputStream();
   os = s.getOutputStream();
   
   System.out.println("-----------welcome to tcp socket-------");
   buffer = new BufferedReader(new InputStreamReader(is));
   
   dos = new DataOutputStream(os);

   System.out.println(buffer.readLine());//輸出
  } catch (IOException e) {
   e.printStackTrace();
  }finally{
   buffer.close();
   os.close();
   is.close();
   s.close();
   server.close();
  }
 }
}

TcpClient.java

package com.iboxpay.tcp;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

public class TcpClient{
 public static void main(String[] args) {
  String[] str = {"172.30.5.58","8080"};
  try {
   client(str);
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
 public static void client(String[] str) throws IOException{
  Socket s = null;
  InputStream ips = null;
  OutputStream ops = null;
  BufferedReader brKey  = null;
  DataOutputStream dos = null;
  BufferedReader brNet  = null;
  try 
  { 
   //Socket s=new Socket(InetAddress.getByName("192.168.0.213"),8001); 
   if(str.length < 2) 
   { 
    System.out.println("Usage:java TcpClient ServerIP ServerPort"); 
    return; 
   } 
   //建立Socket 
   s =new Socket(InetAddress.getByName(str[0]),Integer.parseInt(str[1])); 
   ips =s.getInputStream(); 
   ops =s.getOutputStream(); 
   
   dos = new DataOutputStream(ops); 
   brNet = new BufferedReader(new InputStreamReader(ips)); 
   
   while(true) 
   { 
    brKey = new BufferedReader(new InputStreamReader(System.in));//鍵盤輸入 
    String strWord = brKey.readLine(); 
    dos.writeBytes(strWord + System.getProperty("line.separator")); 
    if(strWord.equalsIgnoreCase("quit")) 
     break; 
   } 
  }catch(Exception e){
   e.printStackTrace();
  } finally{
   dos.close(); 
   brNet.close(); 
   brKey.close(); 
   s.close(); 
  }
 }
}

Copyright © Linux教程網 All Rights Reserved