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

本文永久更新链接地址:

相关内容

    暂无相关文章