黑马程序员_java高级篇网络编程TCP实战Day8(上)
来源:互联网 发布:阿里云绑定新网域名 编辑:程序博客网 时间:2024/05/16 13:55
---------------------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 stubSocket 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 stubServerSocket 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高级篇网络编程TCP实战Day8(下)
- 黑马程序员_java高级篇网络编程UDP实战Day7(下)
- 黑马程序员_java 网络编程 TCP .
- 黑马程序员_java高级篇网络编程基础概念Day7
- 黑马程序员_java基础13网络编程 TCP和DNS
- 黑马程序员_Java网络编程之TCP应用
- 黑马程序员_Java 网络编程
- 黑马程序员_Java网络编程
- 黑马程序员_java网络编程
- 黑马程序员_java网络编程
- 黑马程序员_Java网络编程
- 黑马程序员_java网络编程
- 黑马程序员_java 网络编程
- 黑马程序员_java网络编程
- 黑马程序员_java网络编程
- 黑马程序员_java 网络编程
- 黑马程序员_java网络编程
- C#学习笔记 ----C#变量
- 从1到1000中多少个包含3的数
- Mac OS X 10.9 应用无法启动,提示“来自身份不明的开发者”问题解决
- Extjs3.3 仿百度网盘 DataView 文件列表
- Oracle 函数TRUNC 用法
- 黑马程序员_java高级篇网络编程TCP实战Day8(上)
- 说说知名软件的伪装和防范(上)
- TCP,IP,HTTP,SOCKET区别和联系
- 静静的聆听--曾有你的森林
- Oracle需要启动的服务总结
- 昨晚辩论赛
- 真我流诗人
- 标题、状态栏的隐藏
- CSharp学习笔记之四 关键字、语句、表达式和运算符