Socket初识

1.网络编程概念:
(1).网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用,编程人员可以不用考虑……
(2).网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的!中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理!

2.网络编程三要素:
         A:IP地址  B:端口  C:协议
3.IP地址 = 网络地址 +主机地址
      网络地址:标识计算机或网络设备所在的网段
     主机地址:标识特定主机或网络设备

4查看本机的IP地址
    ipconfig
 测试网络是否通畅
   ping + IP地址
5.网络通信协议
            为在网络中不同的计算机之间进行通信而建立的规则、标准或约定的集合
  TCP协议(Transmission Control Protocol 传输控制协议)
              面向连接的、可靠的、基于字节流的传输通信协议
  UDP协议(User Datagram Protocol 用户数据报协议)
              无连接的协议,在传输数据之前,客户端和服务器并不建立和维护连接
UDP协议的Socket网络编程步骤:
1.利用 DatagramPacket 对象封装数据报
2.利用 DatagramSocket 发送数据报
3利用 DatagramSocket 接收数据报
4利用 DatagramPacket 处理数据报
示例:

第一部分
DatagramSocket ds=new DatagramSocket(1086);
   byte[] bys = new byte[1024];
   int len = bys.length;
   DatagramPacket dp = new DatagramPacket(bys, len);
   ds.receive(dp);
   byte[] by = dp.getData();
   int length = dp.getLength();
   InetAddress address = dp.getAddress();
   String ip = address.getHostAddress();
   String s = new String(by, 0, length);
   System.out.println(ip + "---" + s);

  ds.close();
第二部分:

DatagramSocket ds=new DatagramSocket();
 BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
 
 byte [] bys="呵呵呵".getBytes();
 int num=bys.length;
 InetAddress address=InetAddress.getByName("192.168.60.7");
 int port=1086;
 DatagramPacket dp=new DatagramPacket(bys,num, address,port);
 ds.send(dp);  
 ds.close();

基于TCP协议的Socket网络通信

示例:
第一部分

 Socket sk=new Socket("192.168.60.7",20004);
  BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(sk.getOutputStream()));
  String line=null;
  while((line=br.readLine())!=null){   
   bw.write(line);
   bw.newLine();
   bw.flush();
   
   InputStream is=sk.getInputStream();   
   byte [] by=new byte[1024];
   int num=is.read(by);
   String h=new String(by, 0, num);
   System.out.println("Service:\t"+h);
  }     
   //br.close();
   //bw.close();
   sk.close();
第二部分:

//1.创建对象
   ServerSocket sk=new ServerSocket(20004);
   //2.监听
   Socket s=sk.accept();
   //打包数据
   BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream())); 
   BufferedReader bw=new BufferedReader(new InputStreamReader(System.in));
   OutputStream os=s.getOutputStream();
   String line=null;
   while((line=br.readLine())!=null){
    System.out.println("Client \t"+line);  
    
    os.write(bw.readLine().getBytes());
   }   
   //释放资源
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值