一、TCP:用字符流传输信息

------------------------------------------------------------------------------

[用字符流的要点提示]

1:

将套接字关闭之后,字符流自然也就关闭了,所以只需要socket.shutdownOutput();/socket.shutdownInput();

应为套接字开启的字节流封装在字符流Buffered里面,若果先关闭字符流bw.close(),将会关闭套接字。 抛出java.net.SocketException: Socket is closed异常,说明已经将套接字关闭。

2:必须要写入换行符bw.newLine();(或者在内容末尾加\n),这样在用BufferedReader的readerLine() 接收数据包的时候才能读取到一个换行信息,否则会出现读取错误。

------------------------------------------------------------------------------

public class Tcpc { // 客户端

public static void main(String[] args) throwsUnknownHostException, IOException {

//1.创建套接字指定主机和端口

Socket socket = new Socket(InetAddress.getLocalHost(),8808);

//2打开输入输出流

InputStream is = socket.getInputStream();

OutputStream os = socket.getOutputStream();

//准备要撒送的数据

String send = "我是客户端,请求登录!";

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));

bw.write(send);

bw.newLine();

bw.flush();

socket.shutdownOutput();

//4.准备接受返回的信息,并用行读取

BufferedReader br = new BufferedReader(new InputStreamReader(is));

String lin =br.readLine();

System.out.println("客户端开始接受信息!");

while(lin!=null){

System.out.println(lin);

lin=br.readLine();

}

//5关闭资源

socket.shutdownInput();

}

}

-------------------------------------------------------------------------

public class Tcps { // 服务端

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

//1创建套接字,到指定的端口接受信息

ServerSocket serversocket = new ServerSocket(8808);

//2监听客户端的消息

Socket socket = serversocket.accept();

//3.打开输入输出的流

InputStream is = socket.getInputStream();

OutputStream os = socket.getOutputStream();

//4封装一个行读取的流

BufferedReader br = new BufferedReader(new InputStreamReader(is));

String lin = br.readLine();

while(lin!=null){

System.out.println(lin);

lin = br.readLine();

}

socket.shutdownInput();

//5给客户端一反馈

String replay="我是服务端,允许登录!";

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));

bw.write(replay);

bw.newLine();

bw.flush();

//6关闭资源

socket.shutdownOutput();

}

}

------------------------------------------------------------------------------

二、TCP字节流传输信息

TCP:字节流传输信息

-------------------------------------------------------------------------------------

public class Tcpc { //客户端

public static void main(String[] args) throwsUnknownHostException, IOException {

//1.创建套接字指定主机和端口

Socket socket = new Socket(InetAddress.getLocalHost(),8808);

//2打开输入输出流

InputStream is = socket.getInputStream();

OutputStream os = socket.getOutputStream();

//准备要撒送的数据

String send = "我是客户端,请求登录!";

os.write(send.getBytes());

socket.shutdownOutput();

//4.准备接受返回的信息,并用行读取

System.out.println("客户端接受完毕!");

byte[] by = new byte[1024];

is.read(by);

System.out.println(new String(by,0,by.length));

//5关闭资源

socket.shutdownInput();

}

}

-------------------------------------------------------------------------------------

public class Tcps { //服务端

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

//1创建套接字,到指定的端口接受信息

ServerSocket serversocket = new ServerSocket(8808);

//2监听客户端的消息

Socket socket = serversocket.accept();

//3.打开输入输出的流

InputStream is = socket.getInputStream();

OutputStream os = socket.getOutputStream();

//4封装一个行读取的流

System.out.println("服务端接收完毕!");

byte[] by = new byte[1024];

is.read(by);

System.out.println(new String(by,0,by.length));

socket.shutdownInput();

//5给客户端一反馈

String replay="我是服务端,允许登录!";

System.out.println("服务端反馈完毕!");

os.write(replay.getBytes());

//6关闭资源

socket.shutdownOutput();

}

}

转载于:https://www.cnblogs.com/domi22/p/8046879.html

网络编程—代码—TCP网络传输相关推荐

  1. UNIX网络编程——解决TCP网络传输“粘包”问题

           当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API).TCP/IP传输层有两个并列的协议:TCP和UDP.其中TCP(transport ...

  2. 【Linux网络编程】TCP网络编程中connect listen和accept三者之间的关系

    00. 目录 文章目录 00. 目录 01. TCP服务端和客户端流程 02. connect函数 03. listen函数 04. 三次握手 05. accept函数 06. 附录 01. TCP服 ...

  3. 【Linux网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系

    基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: connect()函数 对于客户端的 connect() 函数,该函数的功能为客户端主动连接服务器,建立连接是通过三 ...

  4. Python网络编程——使用TCP方式传输文件

    TCP文件下载器 客户端 需求:输入要下载的文件名,从服务器端将文件拷贝到本地 步骤: 1.创建TCP套接字,绑定端口 2.连接服务端 3.输入要下载的文件名 4.将文件名编码,并发送到服务端 5.接 ...

  5. c++网络编程——用TCP实现文件传输(windows下基于VS2017)

    c++网络编程--用TCP实现文件传输 定义文件传输协议 服务端代码 客户端代码 测试 文件传输协议FTP是基于TCP协议实现的,为了体验这个过程,本文自定义一个简单的文件传输协议,并基于TCP协议编 ...

  6. Java网络编程:TCP实现群聊私聊代码

    Java网络编程:TCP实现群聊&私聊代码 和上一篇博客差不多,只不过是在群里的基础之上增加了私聊的功能,我们约定,私聊格式为:@xxx:msg 如何实现私聊呢,加入客户端c给服务器发送消息, ...

  7. python网络通信传输的数据类型_Python网络编程中的网络数据和网络错误。

    上一个章节我们说的是套接字名和DNS.这篇文章我们主要解决下面问题. 我们在两台主机之间建立与关闭TCP流连接以及UDP数据报连接后.我们应该怎么准备我们需要传输的数据,该怎么对数据进行编码与格式化. ...

  8. 【网络编程】TCP 网络应用程序开发

    [网络编程]TCP 网络应用程序开发 TCP 网络应用程序开发流程 1. TCP 网络应用程序开发流程的介绍 2. TCP 客户端程序开发流程的介绍 3. TCP 服务端程序开发流程的介绍 4. 小结 ...

  9. 网络编程代码实例:多进程版

    文章目录 前言 代码仓库 内容 代码(有详细注释) server.c client.c Makefile 结果 总结 参考资料 作者的话 前言 网络编程代码实例:多进程版. 代码仓库 yezhenin ...

最新文章

  1. boot访问resources下边的图片_SpringBoot系列之JDBC数据访问
  2. angular 如何在index html 页面包含子页面_Webpack4.0各个击破(1)html篇
  3. 什么是可重入函数和不可重入函数
  4. 11月下旬国内域名解析商Top10:中国数据5.03%居第四
  5. mysql用户角色权限代码_用户权限管理代码
  6. mysql事务服务_MySQL (事务篇)
  7. 笔试题:写一个ArrayList 的动态代理类
  8. linux命令大全vi,待整理 - Linux 下的VI命令大全
  9. JavaFX动画工具
  10. 针对“云计算”服务安全思路的改进-花瓶模型V4.0
  11. 一文搞懂 ElasticSearch 集群,就它了!
  12. linux下组管理命令详解
  13. Fiddler中文版汉化插件 0.1
  14. 电源层和地线层完整性规则_射频电路设计实例以及一些经常遇见的问题
  15. 开通慢直播,RTMP协议和RTSP协议如何选择?
  16. 改 主机名 后 虚拟机 不能启动
  17. 给老年人“种草”,是不是一门好生意?
  18. Android Camera对焦相关基础自动对焦,手动对焦
  19. 无问东西:你曾是少年
  20. python关于类块BASE64问题

热门文章

  1. 数据属性和访问器属性
  2. jQuery--思维导图
  3. [GCJ] Qualification Round 2017
  4. 海量网络存储系统原理与设计(三)
  5. 使用HttpUnit进行集成测试
  6. 选择标签至文本域效果,可多选/可过滤重复/可限制个数
  7. java 标识符_java标识符是什么
  8. 小程序api 分享scene_微信小程序 插件调用API的限制
  9. mysql连接池设计_数据库连接池(基于MySQL数据库)
  10. (4)ISE14.7 ChipScope使用流程(FPGA不积跬步101)