黑马程序员_java高级篇网络编程TCP实战Day8(上)
2013-12-05 08:57
656 查看
---------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! -----------
黑马程序员_java高级篇网络编程TCP实战Day8(上)
(小点补充:当我们把ip:192.168.1.255,就会实现广播)
TCP的开发模式与UDP有区别,UDP分为发送端与接收端,但TCP分为客户端与服务端
,这里列出简单的TCP原理实现,与客户端上传文本。
(一) 简单的TCP原理实现
步骤:
客户端
第一步相当于把买一根的管道,第二步,相当于把这个管道接通,来传输水,第三步开始传输水,第四部,传完以后,关闭闸门。
服务端
(二)简单的自行输入文本,注意流的关闭位置,其实原理不变,就是把我们原来写好的字符改成输入流,通过读取来实习。
客户端
服务端
效果图:
(三) 文本上传,文本上传中,怎样去实现结束,通过在客户端加上一个s.shutdownOutput();//关闭客户端的输出流相当于给流加上一个结束标记。这个标记可以自行定义。如我发一个over过去,当服务端接收到了over就结束读取,因为我们每一次发过去的数据都是readLine()并不包含结束符。
客户端:
服务端:
效果图:
---------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! -----------
黑马程序员_java高级篇网络编程TCP实战Day8(上)
(小点补充:当我们把ip:192.168.1.255,就会实现广播)
TCP的开发模式与UDP有区别,UDP分为发送端与接收端,但TCP分为客户端与服务端
,这里列出简单的TCP原理实现,与客户端上传文本。
(一) 简单的TCP原理实现
步骤:
客户端
//1,创建客户端socket,并指定要连接的主机和端口 Socket socket=new Socket("192.168.1.100",10005); //为了发送数据建立输出流 //2 OutputStream out=socket.getOutputStream(); //3 out.write("abc".getBytes()); //socket关闭后,流也关闭 //4 socket.close();
第一步相当于把买一根的管道,第二步,相当于把这个管道接通,来传输水,第三步开始传输水,第四部,传完以后,关闭闸门。
服务端
//1,建立服务端的Sersocket,并监听 ServerSocket s=new ServerSocket(10005); //2,获取客户端socket对象 Socket socket=s.accept(); //获取客户端发过来的数据,用客户发过来的流对象读取 InputStream in=socket.getInputStream(); byte[] b=newbyte[1024]; int len=in.read(b); System.out.println(new String(b,0,len)); System.out.println("您的IP:"+s.getInetAddress().getHostAddress()); s.close();
(二)简单的自行输入文本,注意流的关闭位置,其实原理不变,就是把我们原来写好的字符改成输入流,通过读取来实习。
客户端
package 网络编程; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.UnknownHostException; public class Scoktcp { /** * @param args * @throws IOException * @throws UnknownHostException */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub //1,建立服务,s相当于建好的大道 Socket s=new Socket("192.168.1.100",10007); //我们走大道,调用流 //OutputStream os1=s.getOutputStream(); //定义读取键盘的流对象 BufferedReader br=new BufferedReader( new InputStreamReader(System.in)); //建立输出对象 BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); String str=""; BufferedReader bur=new BufferedReader(new InputStreamReader(s.getInputStream())); while((str=br.readLine())!=null) { bw.write(str); bw.newLine(); bw.flush(); String str2=bur.readLine(); // int len= is.read(b); System.out.println("ser:"+str2); } // bw.close(); s.close(); } }
服务端
package 网络编程; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; public class SerSockettcp { /** * @param args * 需求:客户端给服务端发送数据,服务端收到后,给客户端返回 * @throws Exception */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub //1,建立服务端的socket,并监听 ServerSocket ss=new ServerSocket(10010); Socket s=ss.accept(); //建立输出对象 String str=""; BufferedReader bur=new BufferedReader(new InputStreamReader(s.getInputStream())); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); while((str=bur.readLine())!=null) { //2,获取客户端socket对象 //获取客户端发过来的数据,用客户发过来的流对象读取 bw.write(str); bw.newLine(); bw.flush(); } bur.close(); bw.close(); ss.close(); // os.close();e } }
效果图:
(三) 文本上传,文本上传中,怎样去实现结束,通过在客户端加上一个s.shutdownOutput();//关闭客户端的输出流相当于给流加上一个结束标记。这个标记可以自行定义。如我发一个over过去,当服务端接收到了over就结束读取,因为我们每一次发过去的数据都是readLine()并不包含结束符。
客户端:
package 网络编程; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; public class CopyTextClient { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Socket s=new Socket("192.168.1.100",10009); BufferedReader br=new BufferedReader(new FileReader("d:/1.txt")); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); String str=""; while((str=br.readLine())!=null) { bw.write(str); bw.newLine(); bw.flush(); } // bw.write("over"); // bw.newLine(); // bw.flush(); s.shutdownOutput();//关闭客户端的输出流相当于给流加上一个结束标记 BufferedReader br1=new BufferedReader(new InputStreamReader(s.getInputStream())); System.out.println(br1.readLine()); bw.close(); s.close(); } }
服务端:
package 网络编程; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; public class CopyTextSer { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub ServerSocket ss=new ServerSocket(10009); Socket s=ss.accept(); BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream())); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter( new FileOutputStream("d:/c_1.txt"))); String str=""; while((str=br.readLine())!=null) { bw.write(str); bw.newLine(); bw.flush(); } BufferedWriter bw1=new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); bw1.write("上传成功!"); bw1.newLine(); bw1.flush(); bw.close(); br.close(); ss.close(); } }
效果图:
---------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! -----------
相关文章推荐
- 黑马程序员_java高级篇网络编程TCP实战Day8(下)
- 黑马程序员_java高级篇网络编程UDP实战Day7(下)
- 黑马程序员_java高级篇网络编程基础概念Day7
- 黑马程序员--java基础--网络编程(UDP和TCP)
- JAVA高级视频 网络编程 07 TCP网络连上传递对象
- JAVA高级视频 网络编程 06 完善的TCP服务器程序模块
- 黑马程序员——Java网络编程(TCP和UDP)
- 黑马程序员-------Java笔记--------网络编程(UDP与TCP基本步骤)
- 黑马程序员-java基础网络编程(TCP)
- 黑马程序员_Java网络编程之TCP应用
- java网络编程 tcp 黑马程序员学习笔记(11)
- 黑马程序员 java基础之网络编程TCP
- JAVA高级视频 网络编程 07 TCP客户端程序
- 黑马程序员——Java基础---网络编程(TCP编程)
- 『黑马程序员』---java--网络编程--TCP基础
- 黑马程序员-13-java网络编程-概念及UDP、TCP连接
- 黑马程序员_毕向东JAVA基础_网络编程(概述&UDP&TCP)
- 黑马程序员--Java基础学习之网络编程(TCP、UDP、Socket、模拟发送和接收数据)
- 黑马程序员——java网络编程中的传输协议:UDP和TCP
- 黑马程序员--10.网络编程--02.【网络传输三要素在Java中的体现】【TCP和UDP概念】【Socket基本概念】