歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java TCP入門例子

Java TCP入門例子

日期:2017/3/1 9:39:49   编辑:Linux編程

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