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