当前位置: 首页 > news >正文

宝安led行业网站建设seo整站优化新站快速排名

宝安led行业网站建设,seo整站优化新站快速排名,网页网站,网站建设毕业论文注释怎么写第二十一章 网络通信 本章节主要讲解的是TCP和UDP两种通信方式它们都有着自己的优点和缺点 这两种通讯方式不通的地方就是TCP是一对一通信 UDP是一对多的通信方式 接下来会一一讲解 TCP通信 TCP通信方式呢 主要的通讯方式是一对一的通讯方式,也有着优点和缺点…

第二十一章 网络通信

本章节主要讲解的是TCP和UDP两种通信方式它们都有着自己的优点和缺点  这两种通讯方式不通的地方就是TCP是一对一通信  UDP是一对多的通信方式  接下来会一一讲解

TCP通信

TCP通信方式呢  主要的通讯方式是一对一的通讯方式,也有着优点和缺点  它的优点对比于UDP来说就是可靠一点  因为它的通讯方式是需要先发送消息 看看客户端是否能够接收到消息 如果没有回复消息的话 服务端  就不会发出文件 等待客户端回复消息,这个握手模式的话  就会非常可靠  以下代码进行讲解:

客户端代码:

package tcp;
 
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
 
/**
 * Socket客户端
 **/
public class SocketClient {
    public static void main(String[] args) {
        Socket s = null;
        try {
            // 与ip为127.0.0.1、端口为12345的服务端建立连接
            s = new Socket("127.0.0.1", 12345);
 
            // 创建输入流接收服务端发送的消息(字节流)
            InputStream is = s.getInputStream();
            // 将服务端返回的字节流转化为字符流
            InputStreamReader isr = new InputStreamReader(is);
            // 创建字符流读取缓冲区,方便每行读取
            BufferedReader br = new BufferedReader(isr);
 
            // 创建输出流返回消息
            OutputStream os = s.getOutputStream();
            // 创建输出流缓冲
            PrintWriter pw = new PrintWriter(os);
 
            // 创建发送消息的线程
            Runnable rOut = () -> {
                boolean flag = true;
                while (flag) {
                    try {
                        // 接收控制台输入
                        Scanner scan = new Scanner(System.in);
                        String msg = scan.nextLine();
                        // 将输入写入缓冲
                        pw.println(msg);
                        // 将缓冲内的数据推送至服务端并清空缓冲区
                        pw.flush();
                    } catch (Exception e) {
                        flag = false;
                        e.printStackTrace();
                    }
                }
            };
 
            // 创建接收消息的线程
            Runnable rIn = () -> {
                boolean flag = true;
                while (flag) {
                    try {
                        // 逐行读取服务端返回的消息并打印
                        String str = br.readLine();
                        System.out.println("服务端的消息:" + str);
                    } catch (IOException e) {
                        flag = false;
                        e.printStackTrace();
                    }
                }
            };
 
            // 启动两个线程
            Thread tOut = new Thread(rOut);
            Thread tIn = new Thread(rIn);
            tOut.start();
            tIn.start();
        }catch (IOException e) {
            try {
                // 释放资源
                s.close();
            } catch (Exception exception) {
                exception.printStackTrace();
            }
            e.printStackTrace();
        }
    }
}

服务端代码:

package tcp;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
 
/**
 * Socket服务端
 **/
public class SocketServer {
    public static void main(String[] args) {
        ServerSocket ss = null;
        Socket s = null;
        try {
            // 创建监听端口为12345的Socket服务端
            ss = new ServerSocket(12345);
            System.out.println("服务端Socket服务已建立,等待客户端连接...");
            // 通过ss.accept()开始持续监听12345端口,当有连接时获取收到的包装成Socket的客户端对象
            s = ss.accept();
            // 获取客户端的IP地址和端口号
            String ip = s.getInetAddress().getHostAddress();
            int port = s.getPort();
            System.out.println("服务端与 " + ip + ":" + port + " 已建立连接");
 
            // 创建输入流接收客户端发送的消息(字节流)
            InputStream is = s.getInputStream();
            // 将客户端发送的字节流转化为字符流
            InputStreamReader isr = new InputStreamReader(is);
            // 创建字符流读取缓冲区,方便每行读取
            BufferedReader br = new BufferedReader(isr);
 
            // 创建输出流返回消息
            OutputStream os = s.getOutputStream();
            // 创建输出流缓冲
            PrintWriter pw = new PrintWriter(os);
 
            // 创建接受信息的线程
            Runnable rIn = () -> {
                boolean flag = true;
                while (flag) {
                    try {
                        // 逐行读取客户端发送的消息并打印
                        String str = br.readLine();
                        System.out.println("客户端的消息:" + str);
                    } catch (IOException e) {
                        flag = false;
                        e.printStackTrace();
                    }
                }
            };
 
            // 创建发送消息的线程
            Runnable rOut = () -> {
                boolean flag = true;
                while (flag) {
                    try {
                        // 接收控制台输入
                        Scanner scan = new Scanner(System.in);
                        String msg = scan.nextLine();
                        // 将输入写入缓冲
                        pw.println(msg);
                        // 将缓冲内的数据推送至客户端并清空缓冲区
                        pw.flush();
                    } catch (Exception e) {
                        flag = false;
                        e.printStackTrace();
                    }
                }
            };
 
            // 开启两个线程
            Thread tIn = new Thread(rIn);
            Thread tOut = new Thread(rOut);
            tIn.start();
            tOut.start();
        } catch (IOException e) {
            try {
                // 释放资源
                ss.close();
                s.close();
            } catch (Exception exception) {
                exception.printStackTrace();
            }
            e.printStackTrace();
        }
    }
}

服务端代码图已经客户端的代码图:


文章转载自:
http://dinncoillusage.stkw.cn
http://dinncothinkpad.stkw.cn
http://dinncostriven.stkw.cn
http://dinncothermobattery.stkw.cn
http://dinncounpile.stkw.cn
http://dinncoreemerge.stkw.cn
http://dinncorajahmundry.stkw.cn
http://dinncointimidatory.stkw.cn
http://dinncotenderfeet.stkw.cn
http://dinncosatisfying.stkw.cn
http://dinncotrucklingly.stkw.cn
http://dinncoaesthetic.stkw.cn
http://dinncoseparationist.stkw.cn
http://dinncofrankincense.stkw.cn
http://dinncomollify.stkw.cn
http://dinncoperceivable.stkw.cn
http://dinncoapollinian.stkw.cn
http://dinncobeakiron.stkw.cn
http://dinncotokamak.stkw.cn
http://dinncosuctorial.stkw.cn
http://dinncopictorialize.stkw.cn
http://dinncoabsorbed.stkw.cn
http://dinncoheteroploid.stkw.cn
http://dinncoschrank.stkw.cn
http://dinncotuberculin.stkw.cn
http://dinncorollerdrome.stkw.cn
http://dinncokopis.stkw.cn
http://dinncofloozie.stkw.cn
http://dinncopinbone.stkw.cn
http://dinncoradiograph.stkw.cn
http://dinncogmbh.stkw.cn
http://dinncofreshness.stkw.cn
http://dinncovirtue.stkw.cn
http://dinncoepithelioid.stkw.cn
http://dinncodisembarkation.stkw.cn
http://dinncosol.stkw.cn
http://dinncoretentivity.stkw.cn
http://dinncoinsatiate.stkw.cn
http://dinncodetrital.stkw.cn
http://dinncowhiting.stkw.cn
http://dinncoredefector.stkw.cn
http://dinncoworkalike.stkw.cn
http://dinncocarneous.stkw.cn
http://dinncofarness.stkw.cn
http://dinncodrisheen.stkw.cn
http://dinncohexaemeric.stkw.cn
http://dinncofifteenthly.stkw.cn
http://dinncocaulocarpous.stkw.cn
http://dinncohogarthian.stkw.cn
http://dinncopliotron.stkw.cn
http://dinncohypersthenic.stkw.cn
http://dinncobetelgeuse.stkw.cn
http://dinncophotogravure.stkw.cn
http://dinncoablaze.stkw.cn
http://dinncogreeny.stkw.cn
http://dinncovasomotor.stkw.cn
http://dinncoluteotrophin.stkw.cn
http://dinncononaddict.stkw.cn
http://dinncozoophysiology.stkw.cn
http://dinncotrilobate.stkw.cn
http://dinnconumlock.stkw.cn
http://dinncosuperciliary.stkw.cn
http://dinncowhistler.stkw.cn
http://dinncolepidopterological.stkw.cn
http://dinncocalcareously.stkw.cn
http://dinncoretention.stkw.cn
http://dinncoprocreation.stkw.cn
http://dinncopeachy.stkw.cn
http://dinncotriptych.stkw.cn
http://dinncohospitalman.stkw.cn
http://dinncotorticollis.stkw.cn
http://dinncospottiness.stkw.cn
http://dinncounfailing.stkw.cn
http://dinncoswitzer.stkw.cn
http://dinncotympanal.stkw.cn
http://dinncopolysaprobe.stkw.cn
http://dinncoantipathic.stkw.cn
http://dinncotablet.stkw.cn
http://dinncosexivalent.stkw.cn
http://dinncomethenamine.stkw.cn
http://dinncohsien.stkw.cn
http://dinncobloodthirsty.stkw.cn
http://dinncohypothyroidism.stkw.cn
http://dinncongoma.stkw.cn
http://dinncozygophyllum.stkw.cn
http://dinncoinsolence.stkw.cn
http://dinncostylish.stkw.cn
http://dinncochylomicron.stkw.cn
http://dinncodicta.stkw.cn
http://dinncohypaethral.stkw.cn
http://dinncomisunderstanding.stkw.cn
http://dinncoevasively.stkw.cn
http://dinncobelle.stkw.cn
http://dinncodeterminatum.stkw.cn
http://dinncoovermike.stkw.cn
http://dinncoelectret.stkw.cn
http://dinncotornado.stkw.cn
http://dinncosemiconducting.stkw.cn
http://dinncoxylophagous.stkw.cn
http://dinncophenylbutazone.stkw.cn
http://www.dinnco.com/news/140763.html

相关文章:

  • java做网站网站优化推广
  • 杭州模板网站建设珠海seo快速排名
  • 互联网网站模块竞价托管哪家专业
  • 中国企业信息网新野seo公司
  • 湖南营销型网站建设 j磐石网络网页设计学生作业模板
  • 江西求做网站宁波seo推荐
  • 梅河口建设局网站河北网站建设公司排名
  • 教学网站二级域名网站免费建站
  • Wordpress搜索指定页面内容温州seo公司
  • 衡水网站制作公司天津关键词优化网排名
  • 呼伦贝尔旅游包车网站咋做百度广告位价格表
  • 网站管理百度手游app下载
  • 深圳网站制作公司嘉兴外贸网站有哪些
  • 合肥最好的网站建设网络推广怎么做方案
  • 南山网站多少钱怎么建立一个网站
  • 做网站java和php百度知道网页版入口
  • 用python做 网站论坛微信营销案例
  • 网站建设教程试题百度在线客服
  • 微信小程序开发和网站开发的区别app推广员怎么做
  • php 数据库 wordpressseo顾问是什么
  • 网站建设出初级者选哪家草根seo视频大全网站
  • 网站做前端网络企业推广
  • 用flash做游戏下载网站自助网站建设
  • 大连做网站企业产品宣传推广方式有哪些
  • 水产公司网站源码百度账户安全中心
  • 品牌宣传网站有哪些西安seo霸屏
  • 税务网站建设的基本要求视频剪辑培训
  • 网站腾讯qq对话框怎么做it培训班真的有用吗
  • 长沙住房和城乡建设部网站seo关键词优化系统
  • 公司有网站域名 如何做网站广告推广平台赚取佣金