当前位置:首页 > 学习笔记 > Java教程 > Java教程 网络socket编程

Java教程 网络socket编程

刘广法2022年03月24日 16:54:20Java教程8260
Java教程 网络socket编程-第1张图片-刘广法IT博客

Tcp/IP协议,传输层协议,网络七层协议。

http协议:应用层协议。

Java的Client

package com.situ.chapter5;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {

    public static void main(String[] args) {
        OutputStream os = null;
        Writer writer = null;
        BufferedWriter bw = null;

        try {
            //
            System.out.println("等待连接服务端");
            Socket socket = new Socket("localhost", 5000);

            System.out.println("连接成功");

            // 输出流
            os = socket.getOutputStream();
            writer = new OutputStreamWriter(os, "UTF-8");
            // 缓冲流
            bw = new BufferedWriter(writer);

            bw.write("你好,我是客户端,我想充个值");
            bw.flush();

        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bw != null) {
                try {
                    bw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

Java的Server:

package com.situ.chapter5;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {
        InputStreamReader isr = null;
        BufferedReader reader = null;

        try {
            ServerSocket ss = new ServerSocket(5000);
            System.out.println("等待客户端连接...");
            // 阻塞等待客户端进行连接
            Socket client = ss.accept();

            System.out.println(client.getInetAddress().getHostAddress() + "客户端已连接");

            // 当连接之后,执行下方代码。从客户端获取流
            InputStream is = client.getInputStream();
            // 将字节流转换成字符流
            isr = new InputStreamReader(is, "UTF-8");
            reader = new BufferedReader(isr);

            String line = null;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }

            System.out.println("读取结束");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (isr != null) {
                try {
                    isr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
    }
}


来源:刘广法博客,请注意转载出处,网站地址为:https://liuguangfa.com/

扫描二维码推送至手机访问。

版权声明:本文由刘广法博客发布,如需转载请注明出处。

本文链接:https://liuguangfa.com/java/151.html

分享给朋友:

“Java教程 网络socket编程” 的相关文章

Java教程 第四节:流程控制语句总结

流程控制语句:一、顺序结构顺序结构:按照写代码的顺序 一次执行二、分支结构1、if语句if(条件){     语句块 }2、if...else...语句if(条件){     语句块 }else{  ...

eclipse删除工作空间的详细步骤(图解)

eclipse删除工作空间的详细步骤(图解)

上一次我修改添加eclipce的工作空间,但只我的eclipce上有两个工作空间,今天我想删除一个第一步: Window > Preferences > General > startup and shutdown -->workspace这就是删除eclipse的...

eclipse的快捷键功能

eclipse的快捷键功能

有一些快捷键是可以修改的,具体修改过程如图下:修改快捷的详细步骤:1、使用快捷键调出快捷键列表进行查看:快捷键列表调用:shift + ctrl + L2、window->preferences->general->keys(或直接搜索keys)快捷键列表:shuft + ctrl...

eclipse 如何更换JDK版本 替换自带的JDK版本

eclipse 如何更换JDK版本 替换自带的JDK版本

设置jdk,用安装的JDK替换eclipse自带的JDK(详细步骤)1、Window-->Presferences2、进入后,搜索“java”,找到“Installed JRES”3、删除自带的JDK:选中自带的jdk,然后选择remove。4、添加自己安装的JDK:选中右边的Add,选择St...

Java练习:找出三位数中所有的水仙花的值

找到三位数中所有为水仙花的值1、水仙花:百位数的立方+十位数的地方+个位数的立方等于这个数本身。2、三位数中。具体的步骤:public static void main(String[] args) { int i =&nbs...

Java练习:从控制台输入一个年份,统计输入的年份到现在一共多少天?

从控制台输入一个年份,统计输入的年份到现在一共多少天?注意事项:1、平年365天,闰年十366天。2月份平年28天,2月份闰年29年。2、今年2022年3月14日3、闰年判断:能够被四百整数;能被4整数但不能被100整数public static void main(S...

用Java实现打印各种图形总结篇(矩形、平行四边形、三角形、菱形)

1、用Java实现打印矩形(长方形、正方形): public static void main(String[] args) { for (int y = 0; y < ...

Java练习:百钱百鸡利用Java进行实现

今有100块钱,需要购买100只鸡,已知鸡的价格是:公鸡5元,母鸡3元,小鸡三只元,问:需要购买多少只公鸡、母鸡、小鸡?Java实现百鸡百钱的方法一: public static void main(String[] args) { for&n...

Java练习:打印出所有3位数的素数

课堂练习:打印出所有3位数的素数。素数:只能被1和其本身整除的数 public static void main(String[] args) { // 打印三位数的素数,素数只能被1和本身整数的数。 for (int...

Java练习:将数组中的元素首尾调换

数组课堂练习:将数组中的元素首尾调换 public static void main(String[] args) { // 数组课堂练习:将数组中的元素首尾调换 int[] a = { ...

Java练习:定义一共整数数组a,b,两个数组,判断两个数组中的重复的元素以及重复次数

Java课后作业:定义一共整数数组a,b,两个数组,判断两个数组中的重复的元素以及重复次数问题1:判断两个数组中重叠的元素?问题2:重叠的元素都重叠了几次,进行排序输出?本题关键:去重(验证之前是否验证过此数)、排序,(冒泡排序法和选择排序法)、关键字break 和continue 的使用 //&n...

Java教程 第八节:方法

定义方法:返回值类型 函数名称(函数列表){       // 函数体,可以执行代码,可以是0行或者多行。}我们常见的 main 方法就是一个在Java中最常见的方法:public static viod main(String []arg...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。