• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > java 中模拟TCP传输的客户端和服务端实例详解

java 中模拟TCP传输的客户端和服务端实例详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了java tcp客户端,tcp客户端,tcp服务器 多客户端,tcp ip vc 客户端程序,android tcp客户端等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一、创建TCP传输的客户端

1、建立TCP客户端的Socket服务,使用的是Socket对象,建议该对象一创建就明确目的地,即要连接的主机;

2、如果连接建立成功,说明数据传输通道已建立,该通道就是Socket流,是底层建立好的,既然是流,说着这里既有输入流,又有输出流,想要输入流或者输出流对象,可以通过Socket来获取,可以通过getOutputStream()和getInputStream()来获取;

3、使用输出流,将数据写出;

4、关闭Socket服务。

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;

public class Client {
  public static void main(String[] args) throws IOException {

    // 1、创建客户端的Socket服务
    Socket socket = new Socket("192.168.1.100", 10002);

    // 2、获取Socket流中输入流
    OutputStream out = socket.getOutputStream();

    // 3、使用输出流将指定的数据写出去
    out.write("TCP is coming !".getBytes());

    // 4、关闭Socket服务
    socket.close();
  }
}

</div>

二、创建TCP传输的服务端

1、建立TCP服务端的的Socket服务,通过ServerSocket对象;

2、服务端必须对外提供一个端口,否则客户端无法连接;

3、获取连接过来的客户端对象;

4、通过客户端对象来获取Socket流,读取客户端发来的数据;

5、关闭资源,关客户端,关服务端。

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
  public static void main(String[] args) throws IOException {

    // 1、创建客户端对象
    ServerSocket ss = new ServerSocket(10002);

    // 2、获取连接过来的客户端对象
    Socket s = ss.accept();

    String ip = s.getInetAddress().getHostAddress();

    // 3、通过Socket对象获取输入流,读取客户端发来的数据
    InputStream in = s.getInputStream();

    byte[] buf = new byte[1024];

    int len = in.read(buf);
    String text = new String(buf, 0, len);
    System.out.println(ip + ":" + text);

  // 4、关闭资源
    s.close();
    ss.close();
  }
}

</div>

三、优化TCP传输的客户端和服务端

在本部分,我们对前两部分的内容进行优化,实现TCP传输模式下的客户端和服务端的交互功能。

/**
*优化TCP传输的客户端
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class ClientUpdate {
  public static void main(String[] args) throws IOException {

    Socket socket = new Socket("192.168.1.100", 10002);

    OutputStream out = socket.getOutputStream();

    out.write("tcp!".getBytes());

    // 读取服务端返回的数据,使用Socket读取流
    InputStream in = socket.getInputStream();
    byte[] buf = new byte[1024];

    int len = in.read(buf);

    String text = new String(buf, 0, len);

    System.out.println(text);

    socket.close();
  }
}

</div>
/**
*优化TCP传输的服务端
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerUpdate {
  public static void main(String[] args) throws IOException {

    // 1、创建服务端对象
    ServerSocket ss = new ServerSocket(10002);

    // 2、获取连接过来的客户端对象
    Socket s = ss.accept(); //accept方式为阻塞式方法

    String ip = s.getInetAddress().getHostAddress();

    // 3、通过Socket对象获取输入流,要读取客户端发来的数据
    InputStream in = s.getInputStream();

    byte[] buf = new byte[1024];

    int len = in.read(buf);
    String text = new String(buf, 0, len);
    System.out.println(ip + ":" + text);

    // 使用客户端的Socket对象的输出流给客户端返回数据
    OutputStream out = s.getOutputStream();
    out.write("收到".getBytes());

    s.close();
    ss.close();
  }
}

</div>

四、创建英文大写转换服务器

应用TCP(Transmission Control Protocol,传输控制协议)的相关性质,创建一个基于TCP传输下的英文大写转换服务器,要求:客户端输入字母数据,发送给服务端;服务端收到数据后显示在控制台,并将该数据转成大写字母返回给客户端;直到客户端输入“over”为止,转换结束。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class TransClient {
  public static void main(String[] args) throws IOException {
    /**
     * 思路:创建客户端
     * 1、创建Socket客户端对象
     * 2、获取键盘录入的数据
     * 3、将录入的信息发送给Socket输出流
     * 4、读取服务端的数据并返回的大写数据
     */

    // 1、创建Socket客户端对象
    Socket s = new Socket("192.168.1.100", 10004);

    // 2、获取键盘录入
    BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

    // 3、Socket输出流
    PrintWriter out = new PrintWriter(s.getOutputStream(), true);

    // 4、Socket输入流,读取服务端的数据并返回的大写数据
    BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

    String line = null;

    while ((line = bufr.readLine()) != null) {

      if ("over".equals(line))
        break;
      out.println(line);

      // 读取服务端返回的一行大写数据
      String upperStr = bufIn.readLine();
      System.out.println(upperStr);
    }
    s.close();
  }
}

</div>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class TransServer {
  public static void main(String[] args) throws IOException {
    /**
     * 思路:创建服务端
     * 1、创建SeverSocket客户端对象
     * 2、获取Socket流
     * 3、通过Socket, 读取客户端发过来的需要转换的数据
     * 4、显示在控制台上
     * 5、将数据转换成大写返回给客户端
     */

    // 1、创建SeverSocket对象
    ServerSocket ss = new ServerSocket(10004);

    // 2、获取Socket对象
    Socket s = ss.accept();

    // 获取IP地址
    String ip = s.getInetAddress().getHostAddress();
    System.out.println(ip + "......connected");

    // 3、获取Socket读取流,并装饰
    BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

    // 4、获取Socket的输出流,并装饰
    PrintWriter out = new PrintWriter(s.getOutputStream(), true);

    String line = null;
    while ((line = bufIn.readLine()) != null) {
      System.out.println(line);
      out.println(line.toUpperCase());
    }

    s.close();
    ss.close();
  }
}

</div>

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • java 中模拟TCP传输的客户端和服务端实例详解

相关文章

  • 2017-05-28java web开发中大量数据导出Excel超时(504)问题解决
  • 2017-05-28Kotlin教程之基本数据类型
  • 2017-05-28springboot整合 beatlsql的实例代码
  • 2017-05-28Java中StringBuffer和StringBuilder_动力节点Java学院整理
  • 2017-05-28springMVC的生命周期详解
  • 2017-05-28springboot集成spring cache缓存示例代码
  • 2017-05-28Java中IO流简介_动力节点Java学院整理
  • 2017-05-28多线程死锁的产生以及如何避免死锁方法(详解)
  • 2017-05-28java中hibernate二级缓存详解
  • 2017-05-28Java递归读取文件例子_动力节点Java学院整理

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • JAVA Frame 窗体背景图片,首位相接滚动代码实例
    • Java设计模式之单例模式详解
    • SSM框架中mybatis接口测试工具类
    • java 获取用户的MAC地址多种方法实例详解
    • java反射应用详细介绍
    • Spring Data JPA中的动态查询实例
    • 命令提示符编译java的方法(必看篇)
    • Java Object类详解_动力节点Java学院整理
    • 使用Spring MVC拦截器实现日志记录的方法
    • Java高级特性(基础)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有