美文网首页
网络程序设计

网络程序设计

作者: 开心的小哈 | 来源:发表于2021-09-05 13:13 被阅读0次

TCP设计模式使用
服务器代码

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MySever {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(1100);
        System.out.println("服务器启动成功.....");
        Socket accept = serverSocket.accept();// 等待用户接入
        System.out.println("等待用户接入.....");
        System.out.println("有客户端接入,客户端IP:" + accept.getInetAddress() + "\t客户端的端口地址" + accept.getLocalPort());
        InputStream inputStream = accept.getInputStream();
        byte bt[] = new byte[1024];
        int read = inputStream.read(bt);
        String string = new String(bt, 0, read);
        System.out.println("客户端发来消息:\t" + string);

        // 给客户端发送消息
        OutputStream outputStream = accept.getOutputStream();
        String nihao = "yes ok ,i`m ServerSocket";
        outputStream.write(nihao.getBytes());

        accept.close();
        serverSocket.close();

    }

}

客户端代码

package my.server;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Myserver {
public static void main(String[] args) throws UnknownHostException, IOException {
    Socket socket = new Socket("127.0.0.1",1100);
    System.out.println("连接成功");
    OutputStream outputStream = socket.getOutputStream();
    String message="ServerSocket holle my Socket";
    outputStream.write(message.getBytes());
    
    //获取服务器发送的消息
    InputStream inputStream = socket.getInputStream();
    byte bt[] = new byte[1024];
    int read = inputStream.read(bt);
    String string = new String(bt, 0, read);
    System.out.println("服务器发消息:\t" + string);
    
    socket.close();
}
}

UDP程序设计
数据包DatagramPackket


image.png
image.png

服务端

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Sender extends Thread {
    int port = 9898;// 端口
    InetAddress group;// 广播组地址
    MulticastSocket socket;// 多播数据包套接字

    @Override
    public void run() {
        super.run();
        while (true) {

            DatagramPacket packet;
            Date date = new Date();
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:sss");
            String massage = "[" + simpleDateFormat.format(date) + "]to day weather";
            byte[] bytes = massage.getBytes();
            packet = new DatagramPacket(bytes, bytes.length, group, port);
            System.out.println(massage);
            try {

                socket.send(packet);
                try {
                    this.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    }

    public Sender() throws IOException {
        group = InetAddress.getByName("224.255.10.0");// 指定广播地址
        socket = new MulticastSocket(port);// 实例化多播数据包套接字
        socket.joinGroup(group);// 加入广播组
    }

    public static void main(String[] args) {
        try {

            Sender sender = new Sender();

            sender.start();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

客户端

package my.server;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.net.UnknownHostException;

public class MyReceive   {
    int port=9898;//
    InetAddress group;
    MulticastSocket socket;
    public MyReceive() throws IOException {
        group = InetAddress.getByName("224.255.10.0");// 指定广播地址
        socket = new MulticastSocket(port);// 实例化多播数据包套接字
        socket.joinGroup(group);// 加入广播组
    }
    public void getData() throws IOException {
        DatagramPacket packet;
        byte data[] =new byte[1024];
        packet= new DatagramPacket(data,data.length,group,port);
        socket.receive(packet);//读取数据包
        //读取数据包的数据
        String string = new String(packet.getData(),0,packet.getLength());
        System.out.println(string);
    }
    
public static void main(String[] args) {
    MyReceive myReceive;
    
        try {
            myReceive = new MyReceive();
            myReceive.getData();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
    
    
    
}

}

其中用到的InetAddress

image.png

相关文章

  • 网络程序设计复习——Day01

    day01 网络程序设计 网络程序设计 1.定义:基于套接字编程或客户服务端编程,程序在计算机网络内与其他程序进行...

  • 网络程序设计

    TCP设计模式使用服务器代码 客户端代码 UDP程序设计数据包DatagramPackket 服务端 客户端 其中...

  • 网络程序设计复习——Day02

    day02 网络程序设计 网络程序设计模型 1.模型种类C/S:客户端/服务器端B/S:浏览器/服务器端 C/S ...

  • 网络对话程序设计

    设计任务:客户端向服务器发送一字符串,并能读取服务器返回的字符串。知识点:TCP套接字技术,C/S软件架构程序设计...

  • 2017.10.10MFC

    今天老师讲了紧张刺激的网络程序设计~~网络编程基础 介绍了TCP/IP协议,TCP协议原理,UPD协议,套接字,的...

  • 网络程序设计复习整理

    1. OSI/RM(七层)结构 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 2.各层网络编程的关键...

  • 《网络程序设计》学习总结

    前言 《网络程序设计》的课程已经结束了,一如孟宁老师以往的风格,继高软的“kingke”后,老师给出了“np201...

  • 网络程序设计课程总结

    sa15226142 王振西 前言 本学年网络程序设计课程项目是血常规报告的OCR识别和基于识别到的数据进行年龄和...

  • 网络程序设计学习总结

    学号:SA16225140姓名:李豪俊 前言:为期7周的“网络程序设计”课程即将告一段落,在此提笔写下对于这门课的...

  • 《网络程序设计》考后感

    一开始选这个的原因是我以为是网页方面的知识,结果。。。。。 这次自考中,我的网络编程是最先复习的,也是复习...

网友评论

      本文标题:网络程序设计

      本文链接:https://www.haomeiwen.com/subject/ghgrwltx.html