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

Java教程 网络socket编程

刘广法2022年03月24日 16:54:20Java教程4250
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/java/151.html

分享给朋友:

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

java教程 第三节:基本数据类型和运算符

一、算术运算符+:加-:减*:乘/:除%:取余例如:a+b、a-b、a*b、a/b、a%b当两个操作数都为整数时,结果必定为整数。当其中一个操作数为小数时,则为小数除。去余数,通常是一对正正整取余数,事实上,对小数和负数一样取余数。小数(浮点数)在计算机中不是精确存在的,并不是精确存在的。二、比较运...

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

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

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

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

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

eclipse 自动提示功能的实现

eclipse 自动提示功能的实现

之前用的版本都是有提示的,最近安装的最新版没有提示,今天就设置让自动提示出来第一步:windows”->"preferences",弹出preferences设置窗口。第二步:在preferences中找到Java,依次展开列表"Editor"->...

eclipse的快捷键功能

eclipse的快捷键功能

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

eclipse 修改默认的工作空间以及修改个人工作空间的编码

eclipse 修改默认的工作空间以及修改个人工作空间的编码

一、修改工作空间workspaceFile-->Awitch Workspace-->Other,就打开下面的图,然后选择我标起来的就可以新建工作空间了。二、设置工作空间workspace的编码为UTF-8设置完你所用的工作空间也就是上一步后,需要修改工作空间的编码为UTF-8步骤如下:...

Java学习 第五节:break和continue关键字

break和continue关键字break:表示中断,退出。退出当前一层循环。一旦break,后面的语句将不会得到执行。continue:中断本次循环,直接进行下一次的循环。continue后面的语句将不会得到执行。...

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

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

Java练习:递归的实操

Java练习:递归的实操

Java学习:递归的实操递归就是直接或者间接调用滋生。需要注意的就是,一定要有一个判断条件让这个死循环结束。Java学习递归实操训练一:利用递归算出10的阶乘:此方法是常规方法:<主要用作和下面用递归的对比> public static void main(...

Java教程 第九节:字符串

创建字符串:// 创建字符串 String sString = "我是字符串"; String sString2 = "我是字符串2"; String sString3&nb...

Java练习:String相关练习 统计字符串中某一个字符/字符串出现的次数

Java练习:String相关练习 统计字符串中某一个字符/字符串出现的次数课堂练习:定义一个字符串"oaoaofdsafdasfdsare2qoaoaoaooooaaaaaoaoaoerefdsavjasjfdasofaoaoaa";统计此字符串,oa出现的次数。方法一:把oa...

Java教程 第十节:面向对象的基础

面向对象基础:Java是一门面向对象的语言。c语言是一门面向过程的语言。面向过程:就是把问题分解成一步一步的进行完成。面向对象:把问题分解成不同的对象承担不同的职责。类和类的关系:1、has a:AhasB,包含关系,聚合关系。2、is a:AisB:继承关系,或者实现接口。3、use a:Ause...

发表评论

访客

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