Java TCP入门例子

来源:互联网 发布:用哪个软件刷机好 编辑:程序博客网 时间:2024/05/18 01:49
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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 香港买错特惠票怎么办 到达迪拜t3 后怎么办 海藻面膜调多了怎么办 被鸡爪子抓伤了怎么办 被鸡抓伤肿了怎么办 护士电子化没有激活码怎么办 窗帘盒螺丝掉了怎么办 窗帘的环扣掉了怎么办 门式起重吊装行车脱轨怎么办 在日本丢了东西怎么办 在日本钱包丢了怎么办 被起诉后没钱还怎么办 分期付款卖车打不起车款怎么办 地铁票买多了怎么办 工伤陪护费没有发票怎么办 工伤医疗费报销单位不盖章怎么办 家里的led灯坏了怎么办 吊顶led灯坏了怎么办 客厅空了一面墙怎么办 轨道灯的轨道不够长怎么办 奔驰大灯不亮了怎么办 led顶灯不亮了怎么办 吸顶灯led灯坏了怎么办 车底盘塑料被刮怎么办 汽车门电机坏了怎么办 宁波北仑普高差三分该怎么办 上班的地方甲醛味很重怎么办 公司不给员工交社保怎么办 户口转到学校毕业了怎么办 外地户口转到北京档案怎么办 隧道防水板过紧怎么办 到国企没报到证怎么办 车子锁了油箱盖能开怎么办 单位不接受档案和户口怎么办 完税凭证弄丢了怎么办 育种玉米公本早了怎么办 网银转账打错了怎么办 转账名字打错了怎么办 普通转账名字打错了怎么办 银行账号转错了怎么办 打款信息错了怎么办