Java TCP入门例子

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



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值