黑马程序员技术交流社区

标题: 网络编程笔记,求打赏技术分, [打印本页]

作者: matthewjk    时间: 2015-4-6 19:15
标题: 网络编程笔记,求打赏技术分,
//后天是最后一批了,还差8技术分,求打赏
1:网络编程
        (1)网络编程:用Java语言实现计算机间数据的信息传递和资源共享
       
        (2)网络编程的三要素
                IP地址,端口,协议。
                       
        (3):协议
                        UDP:数据打包,有限制,不连接,效率高,不可靠
                        TCP:建立数据通道,无限制,效率低,可靠
        (4)Socket机制
                A:通信两端都应该有Socket对象
                B:所有的通信都是通过Socket间的IO进行操作的
        (4)UDP协议发送和接收数据
                发送:
                        创建UDP发送端的Socket对象
                        创建数据并把数据打包
                        发送数据
                        释放资源
        public class SendDemo{
        public static void main(String[] args) throws IOException{
                //创建发送端Socket对象
                DatagramSocket ds=new DatagramSocket();
                //创建数据,并把数据打包
                //DatagramPacket(byte[] buf,int length,InetAddress address,int port)构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
                //创建数据
                byte[]bys="hello,".getBytes();
                int length=bys.length;
                InetAddress address=InetAddress.getByName("127.0.0.1");//在给定主机名的情况下确定主机的 IP 地址。
                int port=10086;
                DatagramPacket dp=new DatagramPacket(bys,length,address,port);
                ds.send(dp);//从此套接字发送数据报包。DatagramPacket 包含的信息指示:将要发送的数据、其长度、远程主机的 IP 地址和远程主机的端口号。
                ds.close();
               
               
        }
}               

                接收:
                        创建UDP接收端的Socket对象
                        创建数据包用于接收数据
                        接收数据
                        解析数据包
                        释放资源
public class ReceiveDemo{
public static void main(String[] args) throws IOException{
                //创建接收对象
                //DatagramSocket(int port)
                DatagramSocket ds=new DatagramSocket(10086);
                //创建一个数据包
                //DatagramSocket(byte[] buf,int length);
                byte[] bys=new byte[1024];
                int length=bys.length;
                DatagramPacket dp=new DatagramPacket(bys,length);
                ds.receive(dp);//阻塞式
                InetAddress address=dp.getAddress();
               
                //解析数据包,并显示在控制台
                //public InetAddress getAddress()
                String ip=address.getHostAddress();
                //public byte[] getData();获取数据缓冲区
                //public int getLength();获取数据的实际长度
                byte[] bys2=dp.getData();
                int len=dp.getLength();
                String s=new String(bys2,0,len);
                System.out.println("ip"+"传递的数据是"+s);
                ds.close();
               
               
        }
}

        (5)TCP协议发送和接收数据
                发送:
                        创建TCP客户端的Socket对象
                        获取输出流,写数据
                        释放资源
public class ClientDemo{
        public static void main(String[] args) throws UnknownHostException, IOException{
                Socket s=new Socket("127.0.0.1",8888);// 创建发送端的Socket对象
                java.io.OutputStream os=s.getOutputStream();
                os.write("hello,tcp".getBytes());
                s.close();
        }
}
                       
                接收:
                        创建TCP服务器端的Socket对象
                        监听客户端连接
                        获取输入流,读取数据
                        释放资源
public class ServerDemo{
        public static void main(String[] args) throws IOException{
                //创建接收端的对象;ServerSocket(int port)
        ServerSocket ss=new ServerSocket(8888);
        Socket s=ss.accept();//侦听并接收到此套接字的连接。此方法在连接传入之前一直阻塞。
        InputStream is =s.getInputStream();// 获取输入流,读取数据显示在控制台
        byte[] bys=new byte[1024];
        int len=is.read(bys);//阻塞式方法
        String str=new String(bys,0,len);
        String ip=s.getInetAddress().getHostAddress();
        System.out.println(ip+"---"+str);
        s.close();
        }
}
作者: Act    时间: 2015-4-6 21:04
小白真心看不明白啊
作者: 菜鸟小A    时间: 2015-4-6 21:21
:handshake:handshake:handshake




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