黑马程序员技术交流社区

标题: (主推)2搜集的TCP问题(可以是老毕的代码中不懂的、.. [打印本页]

作者: java.love    时间: 2013-5-22 08:23
标题: (主推)2搜集的TCP问题(可以是老毕的代码中不懂的、..
本帖最后由 java.love 于 2013-5-22 08:28 编辑

    TCP(Transmission Control Protocol) :TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议。它在OSI模型中位于传输层中。OSI模型即开放式通信系统互联参考模型,是国际标准化组织提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。
    在网络编程的协议中,TCP比UDP更可靠,输出数据量更大,但是效率会稍低。为确保正确地接收数据,TCP要求在目标计算机成功收到数据时发回一个确认(即 ACK)。如果在某个时限内未收到相应的 ACK,将重新传送数据包。如果网络拥塞,这种重新传送将导致发送的数据包重复。但是,接收计算机可使用数据包的序号来确定它是否为重复数据包,并在必要时丢弃它。
    当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择,如:DNS交换。把SNMP建立在UDP上的部分原因是设计者认为当发生网络阻塞时,UDP较低的开销使其有更好的机会去传送管理数据。

   关于TCP和UDP的传输过程用图片能形象的表现出来。
   




TCP编程方面视频中已做了详细介绍和总结,但是关于抛出异常的部分毕老师没有写,因为比较简单,都是IO的异常,我全给抛了一下,不知道对不对,
import java.io.*;
import java.net.*;
public class Server
{  
  public static void main(String args[])  //启动服务器端程序
    {

     ServerSocket server=null;
     Socket you=null;
     while(true)
            {
             try
                  {
                    server=new ServerSocket(6666);
                  }
             catch(IOException e1)
                  {
                     System.out.println("正在监听");
                  }
             try  {
                     you=server.accept();   //建立与客户端连接的SOCKET      
                 InetAddress address=you.getInetAddress();
                     System.out.println("客户端的IP:"+address);
                     
                  }
             catch (IOException e2)
                  {
     System.out.println(e2.toString());
                  }
    finally
     {
     try
     {
     server.close();
     }
     catch (IOException e3)
     {
      System.out.println(e3.toString());
     }
    }
  
  }
}
}
客户端也是一样的,没有写出。

作者: 阿童木    时间: 2014-3-12 21:52
捕获异常,其实不用这样写,同是IOException,捕获一个就够了,可以简化一下:lol




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2