Java联网技术之一TCP
Posted 命运的绯色结局
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java联网技术之一TCP相关的知识,希望对你有一定的参考价值。
最近突然对java网络编程编程这一块非常感兴趣,于是找了很多资料,一点点的尝试,下面是自己的一点小见解,不喜勿喷,欢迎指正。
首先说说客户端和服务器端吧,
如果是网页的话,客户端通过网页的链接对服务器发送请求,服务器做出处理返回给客户。
如果是app的话,那如果自己写服务器端的话,那就是用户通过客户端操作,想服务器端发送请求,然后服务器端就会相应的做出回应。
原理都是一样的。
下面上代码。注意。如果是在eclipse里面的话,先运行服务器代码,再运行客户端代码。
服务器代码:
package com.sun; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class TcpServer { public static void main(String[] args) throws IOException { System.out.println("这里是服务器!"); //6666为服务器的端口号 ServerSocket server = new ServerSocket(10000); System.out.println("Server is starting..."); Socket client = server.accept();//监听端口,并接收客户端来的请求 //第二.得到客户端的输入流(这里注意,客户端的输出其实到服务器端了就是输出了,也就是请求对应响应的关系) InputStreamReader inputstreamreader = new InputStreamReader(client.getInputStream());//得到输入的字节流 BufferedReader br = new BufferedReader(inputstreamreader); //将得到的字节流读入缓冲区 //第三,得到客户端的输出流,想客户端的输出流传入数据 PrintWriter pw = new PrintWriter(client.getOutputStream(),true);//得到一个客户端的响应流 String line = ""; while(line != null){ line = br.readLine(); FileOutputStream file = new FileOutputStream("Person.txt");//这里是用一个文本接收,写入,表示服务器 //端接收到了数据 /* byte[] b = new byte[1024]; b = line.getBytes(); file.write(b);*/ pw.println("服务器接收的是:" + line); file.flush(); } br.close(); pw.close(); } }
客户端代码:
package com.sun; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintStream; import java.io.PrintWriter; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketException; public class TcpClient { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub InetAddress host = InetAddress.getLocalHost(); Socket client = new Socket(host,10000); //根据一个端口号和IP连接一个服务器 //第一:得到一个客户端的输出流, PrintWriter pw = new PrintWriter(client.getOutputStream(),true); //通过输出流将数据通过流的方式传送到服务器端 BufferedReader wt=new BufferedReader(new InputStreamReader(System.in)); String str = wt.readLine(); pw.println("您输入的是=" + str); //第四.客服端接收到服务器传输的输出流变成输入流(接收到响应的数据) //接收服务器返回的数据 BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream())); String line = br.readLine(); System.out.println("客服端输出="+line); br.close(); pw.close(); client.close(); } }
输出结果为:
nihao
客服端输出=服务器接收的是:您输入的是=nihao
这样一个简单的socket就完成了。
以上是关于Java联网技术之一TCP的主要内容,如果未能解决你的问题,请参考以下文章
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段