首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >corejava辅导(14--3)

corejava辅导(14--3)

作者头像
紫风
发布2025-10-14 17:15:21
发布2025-10-14 17:15:21
1010
举报

TCP Socket

TCPTranfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。

   1) 服务器分配一个端口号,服务器使用accept()方法等待客户端的信号,信号一到打开socket连接,从socket中取得OutputStream和InputStream。

   2) 客户端提供主机地址和端口号使用socket端口建立连接,得到OutputStream和InputStream。

TCP/IP的传输层协议

建立TCP服务器端

一般,我们把服务器端写成是分发Socket的,也就是总是在运行,

创建一个TCP服务器端程序的步骤:

    1). 创建一个ServerSocket

    2). 从ServerSocket接受客户连接请求

    3). 创建一个服务线程处理新的连接

    4). 在服务线程中,从socket中获得I/O流

    5). 对I/O流进行读写操作,完成与客户的交互

    6). 关闭I/O流

    7). 关闭Socket

ServerSocket server = new ServerSocket(post)

Socket connection = server.accept();

ObjectInputStream put=new ObjectInputStream(connection.getInputStream());

ObjectOutputStreamo put=newObjectOutputStream(connection.getOutputStream()); 

处理输入和输出流;

关闭流和socket。

典型的服务器端。

public class Server1 {

     public static void main(String[] args) throws Exception {

         ServerSocket ss=new ServerSocket(9000);

         while(true){

              Socket s=ss.accept();//获得一个Socket对象。

              Thread t=new Thread1(s);//分发Socket。

              t.start();

         }

     }

}

class Thread1 extends Thread{

     Socket s;

     public Thread1(Socket s){

         this.s=s;

     }

     public void run(){

         try {

              OutputStream o=s.getOutputStream();

              PrintWriter out=new PrintWriter(o);

              out.println("Hello Client");

              out.flush();

              s.close();

         } catch (IOException e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

         }        

     }

}

建立TCP客户端

创建一个TCP客户端程序的步骤:

    1).创建Socket

    2). 获得I/O流

    3). 对I/O流进行读写操作

    4). 关闭I/O流

    5). 关闭Socket

Socket connection = new Socket(127.0.0.1, 7777);

ObjectInputStream input=new ObjectInputStream(connection.getInputStream());

ObjectOutputStream utput=new ObjectOutputStream(connection.getOutputStream());

处理输入和输出流;

关闭流和socket。

例:

服务器端:

import java.net.*;

import java.io.*;

public class Server1 {

     public static void main(String[] args) throws Exception {

         ServerSocket ss=new ServerSocket(9000);

         while(true){

              Socket s=ss.accept();

              Thread t=new Thread1(s); //为每个线程分配的Socket

              t.start();

         }

     }

}

class Thread1 extends Thread{

     Socket s;  

public Thread1(Socket s){

         this.s=s;

     }

     public void run(){

         try {

              OutputStream o=s.getOutputStream();

              PrintWriter out=new PrintWriter(o);

              out.println("Hello Client");

              out.flush();

              s.close();

         } catch (IOException e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

         }        

     }

}

客户端:

import java.net.*;

import java.io.*;

public class Client1 {

     public static void main(String[] args) throws Exception{

         Socket s=new Socket("127.0.0.1",9000);

         InputStream i=s.getInputStream();

         InputStreamReader ir=new InputStreamReader(i);

         BufferedReader in=new BufferedReader(ir);

         String str=in.readLine();

         System.out.println(str);

         s.close();

     }

}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档