TCP协议是一个有连接可靠地协议。

TCP编程的核心思路

开发服务器端
ServerSocket ss=new ServerSocket(9000)
ss.accept();  

 

 
publicclassTcpServer {
      publicstaticvoidmain(String[] args) {
            try{
                  
                   ServerSocket ss=newServerSocket (9000);//创建SocketServer对象,并绑定端口
                  Socket s=ss.accept();
                  BufferedReader br=newBufferedReader(newInputStreamReader(s.getInputStream()));//调用getInputStream方法,进行I/O操作
                  String str=br.readLine();
                  System.out.println("接收的数据为:"+str);
                  s.close();
                  
            }catch(IOException e) {
                  
                  e.printStackTrace();
                  
            }
      }
}
public class TcpServer02 {
             public static void main(String[] args) {
                   try {
                        
                        ServerSocket ss= new ServerSocket(9000);//创建SocketServer对象,并绑定端口
                        Socket s=ss.accept();
                        BufferedReader br= new BufferedReader(new InputStreamReader(s.getInputStream()));//调用getInputStream方法,进行I/O操作
                        String str=br.readLine();
                        System. out.println("接收的数据为:" +str );
                        
                        
                        PrintWriter pw= new PrintWriter(s.getOutputStream());
                        pw.println( str+"from Server");
                        pw.flush();
                        s.close();
                        
                  } catch (IOException e) {
                        
                        e.printStackTrace();
                        
                  }
            }
      }


 
  开发客户端
     Socket s=new Socket("150.236.56.101",9000);
public class TcpClient {
       public static void main(String[] args) {
             try {
                  Socket s= new Socket("localhost" ,9000);//创建Socket对象,并连接服务器
                  PrintWriter pw= new PrintWriter(s.getOutputStream());//调用getOutputStream方法,进行I/O操作
                  pw.println( "Hello world!");
                  pw.flush(); //将缓冲区里的数据向外发出
                  s.close();
            } catch (UnknownHostException e) {
                  e.printStackTrace();
            } catch (IOException e) {
                  e.printStackTrace();
            }
            
      }
      
}
public class TcpClient02 {
       public static void main(String[] args) {
             try {
                  Socket s= new Socket("localhost" ,9000);//创建Socket对象,并连接服务器
                  PrintWriter pw= new PrintWriter(s.getOutputStream());//调用getOutputStream方法,进行I/O操作
                  pw.println( "Hello world!");
                  pw.flush(); //将缓冲区里的数据向外发出
                  
                  BufferedReader br= new BufferedReader(new InputStreamReader(s.getInputStream()));
                  String str=br.readLine();
                  System. out.println("接收服务器返回信息:" +str);
                  s.close();
            } catch (UnknownHostException e) {
                  e.printStackTrace();
            } catch (IOException e) {
                  e.printStackTrace();
            }
            
      }
}


 
以上程序存在的问题,服务器只能运行一次
while(true){
调用accept()方法
调用getXXXStream方法,进行I/O操作
关闭Socket
}
像以上那样加入一个死循环,也不能达到目的,所以此时可以运用线程来操作

 

 

 
publicclassServerThread extendsThread{
      Sockets;
      publicServerThread(Socket s) {
            this.s=s;
      }
      
      publicvoidrun() {//实现run()方法
            try{
                  BufferedReader br=newBufferedReader(newInputStreamReader(s.getInputStream()));//调用getInputStream方法,进行I/O操作
                  String str=br.readLine();
                  System.out.println("接收的数据为:"+str);
                  
                  
                  PrintWriter pw=newPrintWriter(s.getOutputStream());
                  pw.println(str+"from Server");
                  pw.flush();
                  
            }catch(IOException e) {
                  
                  e.printStackTrace();
                  
            }finally{
                        try{
                              s.close();
                        }catch(IOException e) {
                               e.printStackTrace();
                        }
                  
            }
      }
}
public class TcpServer03 {
       public static void main(String[] args) throws IOException {
            ServerSocket ss= new ServerSocket(9000);
             while(true ){
                  Socket s=ss.accept();
                  Thread st= new ServerThread(s);
                  st.start();
            }
      }
}
UDP:无连接,不可靠(应用:网络视频聊天)
UDP编程
java.net.DatagramSocket
java.net.DatagramPacket
UDP编程的核心思路
服务器 DatagramSocket socket=new DatagramSocket(9000)
客户端 DatagramSocket socket=new DatagramSocket()
DatagramPacket

DatagramPacket(byte[] buf,int,length)
DatagramPacket(byte[] buf,int,length,SocketAddress)
getAddress()/getSockAddress()/getPort()/getLength()
setAddress()/setSockAddress()/setPort()/setLength()
public class UdpClient {
      
       public static void main(String[] args) throws IOException {
            DatagramSocket socket= new DatagramSocket();
            String str= "Hello World!";
             byte[] buf=str.getBytes();
            DatagramPacket packet= new DatagramPacket(buf,0,buf.length ,new InetSocketAddress("localhost" ,9000));
            socket.send(packet);
            socket.close();
      }
}
public class UdpServer {
       public static void main(String[] args) throws IOException {
            DatagramSocket socket= new DatagramSocket(9000);
             byte[] buf=new byte[100];
            DatagramPacket paper= new DatagramPacket(buf,0,buf.length );
            socket.receive(paper);
            String str=new String(buf,0,paper.getLength());
            System. out.println(str);
            socket.close();
      }
}

URL概念(统一资源定位符)
URL组成
     协议名://主机名(或者IP地址):端口号/资源

 如:http://localhost:8080/web/a.jpg;
URL编程
 URL
 URLConnection
public class URLTest {
       public static void main(String[] args) throws IOException {
            URL url= new URL("http://www.Oracle.com" );
            URLConnection conn=url.openConnection();
            InputStream in=conn.getInputStream();
            BufferedReader br= new BufferedReader(new InputStreamReader(in));
            String line= null;
             while((line=br.readLine())!=null){
                  System. out.println(line);
            }
            br.close();
      }
}

转载于:https://blog.51cto.com/5028233/857026

java网络编程 个人心得相关推荐

  1. 20145206《Java程序设计》实验五Java网络编程及安全

    20145206<Java程序设计>实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 我和201451 ...

  2. java 密钥工厂 desede_20145212 实验五《Java网络编程》

    20145212 实验五<Java网络编程> 一.实验内容1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代 ...

  3. Java学习总结:52(Java网络编程)

    Java网络编程 开发第一个网络程序 java.net包提供了网络编程有关的开发工具类,在此包中有一下两个主要的核心操作类. ServerSocket类:是一个封装支持的TCP协议的操作类,主要工作在 ...

  4. Java - 网络编程(NetWork)

    Java - 网络编程(NetWork) 一.java.net包下的 InetAddress 类的使用: > 一个 InetAddress 代表着一个IP地址 > 主要用来查看本机的IP和 ...

  5. 【Java】 Java网络编程总结

     一.网络编程三要素: IP地址:每个设备在网络中的唯一标识. 端口号:每个程序在设备上的唯一标识. 协议:为计算机网络中进行数据交换而建立的规则或约定的集合. UDP: 面向无连接,数据不安全,速度 ...

  6. Java网络编程笔记5

    在Java网络编程笔记4中我们看到了客户端与服务器通信的过程,只是在前面的程序只是单个客户端与服务器通信 的例子. 接下来我们看如何实现多个客户端与服务器通信,对于服务器来说,它要为每个客户端请求的S ...

  7. 实验五 Java网络编程及安全 实验报告 20135232王玥

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序与设计         班级:1352 姓名:王玥 学号:20135232 成绩:             指导 ...

  8. NIO详解(一):java网络编程IO总结(BIO、NIO、AIO)

    1.基本概念 在Java网络通信中,最基本的概念就是Socket编程了.Socket又称"套接字" 向网络发出请求或者应答网络请求. Socket 和ServerSocket类库位 ...

  9. 04.Java网络编程(转载)

    1.网络编程 1.1计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 按照计算机网络的定义,通过一定的物理设备将处于不同位置的计算机连接起来组成的网络,这个网络中包含 ...

最新文章

  1. 数据结构(06)— 线性循环链表实战
  2. Cell二连发 | 广东CDC/耶鲁大学利用纳米孔测序揭示中/美新冠病毒基因组流行病学传播规律...
  3. 阿里P7工作总结:Spring MVC的工作原理,看完受益匪浅
  4. Office 2016 for Mac试用之Excel篇
  5. 为Qt Designer创建自定义Widgets小部件
  6. Android 第三方库RxLifecycle使用
  7. CodeForces - 1358C Celex Update(思维)
  8. c语言经典算法大全pdf,c语言经典算法100例pdf版.pdf
  9. 用python建云盘_实用的Python(3)超简单!基于Python搭建个人“云盘”
  10. 技术人,其实很有优势
  11. php 字符串长度判断_php 字符串长度判断更高效的方法
  12. 通达信c语言编程,通达信编程实例100个;
  13. .axf文件_一文看懂hex文件、bin文件、axf文件的区别
  14. HDFS—Web页面操作
  15. 影创发布首款头手6DoF MR眼镜鸿鹄,搭载高通骁龙XR2平台
  16. 26岁考计算机研究生,26岁考研究生好还是考公务员好?总结得太精辟了
  17. Android 2 时代到来了,敢为天下先是我等求知若渴的程序员的优秀品质
  18. Java后端以及web前端及echarts框架词云分析
  19. Win7 IIS部署网站局域网内用户无法访问网站解决方案
  20. 4年外包终上岸,我只能说这类公司以后能不去就不去

热门文章

  1. mongo ttl索引
  2. 触屏网站如何实现返回并刷新
  3. 题目1362:左旋转字符串(Move!Move!!Move!!!)
  4. python list元素合并_python list 合并连接字符串的方法
  5. 石子归并 51Nod - 1021
  6. 构建和实现单点登录解决方案(转载于IBMdeveloperWorks)
  7. 传智168期JavaEE struts2杜宏 day32~day33(2017年2月15日23:27:09)
  8. Linux shell命令 cp 加上-f还是提示是否覆盖
  9. HDU 2516 (Fabonacci Nim) 取石子游戏
  10. DNS resolving 占用大量日志