新手学习-Tcp的服务端与客户端之间进行通讯
2017-07-02 20:19
375 查看
简单的小程序,先启动服务器端,然后启动客户端,只能做到客户端先说话,然后服务器回一句,然后客户端又可以再说一句。里面涉及到了流,关键是练习字符流的使用。
值得一提的点
1.
Socket对象获取到的输入流或者是输出流都是字节流 要使用转换流转换为字符流
2.
BufferedWriter的write()方法写出去后 写的东西存到了BufferedWrite内部维护的一个大小为1024b的字符数组中 要调通flush()方法刷新一下 才能写得出去
3.
BufferedReader的readLine()方法是一次阅读一行(api:读取一个文本行。通过下列字符之一即可认为某行已终止:换行 (‘\n’)、回车 (‘\r’) 或回车后直接跟着换行。 )
使用BufferedWriter的writeLine()方法输出的时候 并不会把\r\n输出出去,所以输出的时候要手动添加\r\n
初学者 还请多多关照
值得一提的点
1.
Socket对象获取到的输入流或者是输出流都是字节流 要使用转换流转换为字符流
2.
BufferedWriter的write()方法写出去后 写的东西存到了BufferedWrite内部维护的一个大小为1024b的字符数组中 要调通flush()方法刷新一下 才能写得出去
3.
BufferedReader的readLine()方法是一次阅读一行(api:读取一个文本行。通过下列字符之一即可认为某行已终止:换行 (‘\n’)、回车 (‘\r’) 或回车后直接跟着换行。 )
使用BufferedWriter的writeLine()方法输出的时候 并不会把\r\n输出出去,所以输出的时候要手动添加\r\n
初学者 还请多多关照
服务器端
import java.net.*; import java.io.*; import java.util.*; class ServerSocket1{ public static void main(String[] args) throws Exception{ ServerSocket serverSocket = new ServerSocket(9090); Socket socket = serverSocket.accept(); //获取到服务端的输出流对象 BufferedWriter socketWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); //获取服务端的输入流对象 BufferedReader socketReader =new BufferedReader( new InputStreamReader(socket.getInputStream())); //获取键盘的输入流对象 BufferedReader keyReader = new BufferedReader(new InputStreamReader(System.in)); //接收数据 String line = null ; while((line = socketReader.readLine())!=null){ System.out.println(line); //服务器接收到数据 并提示回复 System.out.println("请输入你要回送的数据。。。。"); line = keyReader.readLine(); //输出的时候要添加\r\n 否则客户端的readLine()识别不到这是一行 socketWriter.write(line+"\r\n"); socketWriter.flush(); System.out.println("数据已发送。。。。"); } socket.close(); } }
客户端
import java.net.*; import java.io.*; import java.util.*; class Socket1{ public static void main(String[] args)throws IOException { //建立tcp服务 Socket socket = new Socket(InetAddress.getLocalHost(),9090); //获取到客户端的输出流对象 BufferedWriter socketWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); //获取客户端的输入流对象 BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream())); //获取键盘的输入流对象 BufferedReader keyReader = new BufferedReader(new InputStreamReader(System.in)); // String line =null; //发送数据 while((line=keyReader.readLine())!=null){ socketWriter.write(line+"\r\n"); socketWriter.flush(); line = socketReader.readLine(); System.out.println(line); } socket.close(); } }
相关文章推荐
- linux下简单的TCP服务端与客户端进行网络通讯的程序
- 新手学习-Tcp的服务端与客户端的登录注册系统
- 足迹二:Android客户端与PC服务端之间的SOCKET通讯实现登陆功能(客户端 仅供学习)
- Esp8266学习之旅⑧ 你要找的8266作为UDP、TCP客户端或服务端的角色通讯,都在这了。(带Demo)
- java TCP客户端与服务端之间的通讯
- 宋体客户端客户端通过tcp和服务端进行交互
- Android客户端和Servlet服务端的JSON传输(注释详细到啰嗦的地步,欢迎新手学习)
- 利用多线程和TCP技术,实现客户端与服务端之间的通信
- 及时释放服务端与客户端之间的TCP连接的方法
- C语言实现服务端和客户端进行TCP通信实例
- 基于TCP的网络编程之服务端和客户端之间的交流
- Linux C 服务端同时与多个客户端进行通讯
- Java TCP 客户端和服务端之间的使用
- 最近在看socket连接,学习了一点适合新手学习,socket客户端和服务端长连接,废话就不多说了,大家看了就明白了
- Linux Socket编程:基于TCP/IP的客户端与服务端通讯实例
- 新手:TCP协议-客户端-服务端-文本转换问题
- 两个APP之间的通讯(客户端调用服务端里的音乐播放)
- 没有任何关闭socket的日志,客户端和服务端进程都在, 网络连接完好, 为什么进行某操作后好好的tcp连接莫名其妙地断了呢?
- C语言实现服务端和客户端进行TCP通信实例
- Untiy中用C#实现TCP通讯(Socket通讯)服务端与客户端皆可