A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 张俊飞 中级黑马   /  2013-12-16 16:53  /  1086 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Ip地址
  网络中设备的标识
  不宜记忆,可用主机名
  本地回环地址:127.0.01 主机名:localhost
端口号
  用于标识进程的逻辑地址,不同进程的标识不同
  有效端口:0-65535,其中0-1024系统使用或保留端口
传输协议
  简单来说就是通讯的规则
  常见协议:tcp,udp
UDP
  将数据及源和目的封装在数据包中,不需要建立连接
  每个数据包大小限制在64k内
  因无连接,是不可靠的协议
  因为不需要连接,所以速度快
TCP
  建立连接,形成传输数据的通道
  在连接中进行大数据量传输
  通过三次握手完成连接,是可靠协议
  必须建立连接,效率偏低
Socket
  Socket就是为网络服务提供的一种机制
  通信两端都有Socket
  网络通信其实就是socket金的通信
  数据在两个socket键通过IO传输
  
UDP发送端与接受端的建立
  发送端
public class UdpSend {
        public static void main(String[] args) throws Exception{
                //创建datagramSock对象,用来创建udp的发送端
                DatagramSocket ds = new DatagramSocket();
                //打包数据
                byte[] data = "haha".getBytes();
                DatagramPacket dp =
New DatagramPacket(data,data.length,InetAddress.getByName("sds"),10000);

                //发送数据
                ds.send(dp);
                //关闭资源
                ds.close();
        }

}
UDP接受端
public class UdpRec {
        public static void main(String[] args) throws Exception{
               
                //创建用来接受数据的套接字
                DatagramSocket ds = new DatagramSocket(10000);

                //创建DatagramPacket对象,用来处理接受到的数据包
                byte[] data = new byte[1024];
                DatagramPacket dp = new DatagramPacket(data,data.length);
               
                //调用recive方法接受数据
                ds.receive(dp);
               
                //获取数据
                String str = new String(dp.getData(),0,dp.getLength());
                System.out.println(str);
               
                //关闭资源
                ds.close();
               
        }

}


TCP客户端与服务端代码实例
  要求客户端发送字符,服务端接受并转换成大写并返回
  
  客户端代码:
public class TcpCilent {

        public static void main(String[] args) throws Exception{
               
                //建立Socket服务对象
               
                Socket s = new Socket(InetAddress.getByName("sds"),10003);
               
                //建立键盘输入流
               
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                       
                //建立网络输出流
               
                BufferedWriter bwOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
               
                //写出数据
               
                bwOut.write(br.readLine());               
                //因为写出的数据没有结束符,所以readLine方法不会结束,所以要在写出数据的时候天界换行,并刷新
                bwOut.newLine();
                bwOut.flush();
               
                //建立网络输入流
               
                BufferedReader brIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
               
                System.out.println(brIn.readLine());
               
               
                br.close();
                s.close();

        }

}

服务端代码:
public class TcpServe {
       
        public static void main(String[] args) throws Exception
        {
                //建立服务端套接字对象
                ServerSocket ss = new ServerSocket(10003);
               
                //获取客户端对象
               
                Socket s = ss.accept();
               
                //String ip = s.getInetAddress().getHostName();
               
                //System.out.print(ip);
               
                //获取客户端的输入流
               
                BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
               
                //获取输入流的内容
               
                String str = br.readLine();
               
                //获取客户端的输出流
               
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
               
                //把客户端发送过来的数据转换成大写并写出去
               
                bw.write(str.toUpperCase());
               
                //添加结束符,并刷新
                bw.newLine();
                bw.flush();
               
                s.close();
                ss.close();
               
        }

}

  
  

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

1 个回复

倒序浏览
您需要登录后才可以回帖 登录 | 加入黑马