TCP协议是一个有连接可靠地协议。
TCP编程的核心思路
  开发服务器端
      ServerSocket ss=new ServerSocket(9000)
       ss.accept();  

 

 
public class TcpServer {
       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);
                  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
     }
像以上那样加入一个死循环,也不能达到目的,所以此时可以运用线程来操作

 

 

 
public class ServerThread  extends Thread{
      Socket s;
       public ServerThread(Socket s) {
             this.s =s;
      }
      
       public void run() {//实现run()方法
             try {
                  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();

                  
            } 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();

      }

}