精华内容
下载资源
问答
  • Android 客户端与服务器端进行数据交互Demo(包含服务器端和客户端) 实现了基本的数据交互及验证
  • 咸鱼笔记—redis服务器端和客户端的命令Redis服务器端和客户端的命令服务器端客户端 争当咸鱼王,欢迎大神指点 Redis服务器端和客户端的命令 稳定版本3.2 服务器端 服务器端的命令为 redis-server ...

    咸鱼笔记—redis服务器端和客户端的命令


    争当咸鱼王,欢迎大神指点

    Redis服务器端和客户端的命令

    稳定版本3.2

    服务器端
    • 服务器端的命令为
      redis-server

    • 可以使用help查看帮助⽂档

       redis-server --help
      
    • 推荐使⽤服务的⽅式管理redis服务

    • 启动

       sudo service redis start
      
    • 停止

       sudo service redis stop
      
    • 重启

       sudo service redis restart
      
    • 个人习惯

       ps -ef|grep redis 查看redis服务器进程
      
       sudo redis-server /etc/redis/redis.conf 指定加载的配置文件
      

    在这里插入图片描述
    在这里插入图片描述
    sudo kill -9 pid 杀死redis服务器

    在这里插入图片描述
    在这里插入图片描述

    客户端
    • 客户端的命令为redis-cli

    • 可以使用help查看帮助文档

       redis-cli --help
      

    在这里插入图片描述

    • 连接redis

       redis-cli
      
    • 运行测试命令

       ping
      

    在这里插入图片描述

    • 切换数据库

    • 数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库

       select n
      

    sl

    展开全文
  • 基于UDP的服务器端和客户端

    千次阅读 2019-07-18 11:06:04
    UDP中的服务器端和客户端没有连接 UDP 不像 TCP,无需在连接状态下交换数据,因此基于 UDP 的服务器端和客户端也无需经过连接过程。也就是说,不必调用 listen() 和 accept() 函数。UDP 中只有创建套接字的过程和...

    前面的文章中我们给出了几个 TCP 的例子,对于 UDP 而言,只要能理解前面的内容,实现并非难事。

    UDP中的服务器端和客户端没有连接

    UDP 不像 TCP,无需在连接状态下交换数据,因此基于 UDP 的服务器端和客户端也无需经过连接过程。也就是说,不必调用 listen() 和 accept() 函数。UDP 中只有创建套接字的过程和数据交换的过程。

    UDP服务器端和客户端均只需1个套接字

    TCP 中,套接字是一对一的关系。如要向 10 个客户端提供服务,那么除了负责监听的套接字外,还需要创建 10 套接字。但在 UDP 中,不管是服务器端还是客户端都只需要 1 个套接字。之前解释 UDP 原理的时候举了邮寄包裹的例子,负责邮寄包裹的快递公司可以比喻为 UDP 套接字,只要有 1 个快递公司,就可以通过它向任意地址邮寄包裹。同样,只需 1 个 UDP 套接字就可以向任意主机传送数据。

    基于UDP的接收和发送函数

    创建好 TCP 套接字后,传输数据时无需再添加地址信息,因为 TCP 套接字将保持与对方套接字的连接。换言之,TCP 套接字知道目标地址信息。但 UDP 套接字不会保持连接状态,每次传输数据都要添加目标地址信息,这相当于在邮寄包裹前填写收件人地址。

    发送数据使用 sendto() 函数:

    
     
    1. ssize_t sendto(int sock, void *buf, size_t nbytes, int flags, struct sockaddr *to, socklen_t addrlen); //Linux
    2. int sendto(SOCKET sock, const char *buf, int nbytes, int flags, const struct sockadr *to, int addrlen); //Windows

    Linux 和 Windows 下的 sendto() 函数类似,下面是详细参数说明:

    • sock:用于传输 UDP 数据的套接字;
    • buf:保存待传输数据的缓冲区地址;
    • nbytes:带传输数据的长度(以字节计);
    • flags:可选项参数,若没有可传递 0;
    • to:存有目标地址信息的 sockaddr 结构体变量的地址;
    • addrlen:传递给参数 to 的地址值结构体变量的长度。


    UDP 发送函数 sendto() 与TCP发送函数 write()/send() 的最大区别在于,sendto() 函数需要向他传递目标地址信息。

    接收数据使用 recvfrom() 函数:

    
     
    1. ssize_t recvfrom(int sock, void *buf, size_t nbytes, int flags, struct sockadr *from, socklen_t *addrlen); //Linux
    2. int recvfrom(SOCKET sock, char *buf, int nbytes, int flags, const struct sockaddr *from, int *addrlen); //Windows

    由于 UDP 数据的发送端不定,所以 recvfrom() 函数定义为可接收发送端信息的形式,具体参数如下:

    • sock:用于接收 UDP 数据的套接字;
    • buf:保存接收数据的缓冲区地址;
    • nbytes:可接收的最大字节数(不能超过 buf 缓冲区的大小);
    • flags:可选项参数,若没有可传递 0;
    • from:存有发送端地址信息的 sockaddr 结构体变量的地址;
    • addrlen:保存参数 from 的结构体变量长度的变量地址值。

    基于UDP的回声服务器端/客户端

    下面结合之前的内容实现回声客户端。需要注意的是,UDP 不同于 TCP,不存在请求连接和受理过程,因此在某种意义上无法明确区分服务器端和客户端,只是因为其提供服务而称为服务器端,希望各位读者不要误解。

    下面给出 Windows 下的代码,Linux 与此类似,不再赘述。

    服务器端 server.cpp:

    
     
    1. #include <stdio.h>
    2. #include <winsock2.h>
    3. #pragma comment (lib, "ws2_32.lib") //加载 ws2_32.dll
    4.  
    5. #define BUF_SIZE 100
    6.  
    7. int main(){
    8. WSADATA wsaData;
    9. WSAStartup( MAKEWORD(2, 2), &wsaData);
    10.  
    11. //创建套接字
    12. SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0);
    13.  
    14. //绑定套接字
    15. sockaddr_in servAddr;
    16. memset(&servAddr, 0, sizeof(servAddr)); //每个字节都用0填充
    17. servAddr.sin_family = PF_INET; //使用IPv4地址
    18. servAddr.sin_addr.s_addr = htonl(INADDR_ANY); //自动获取IP地址
    19. servAddr.sin_port = htons(1234); //端口
    20. bind(sock, (SOCKADDR*)&servAddr, sizeof(SOCKADDR));
    21.  
    22. //接收客户端请求
    23. SOCKADDR clntAddr; //客户端地址信息
    24. int nSize = sizeof(SOCKADDR);
    25. char buffer[BUF_SIZE]; //缓冲区
    26. while(1){
    27. int strLen = recvfrom(sock, buffer, BUF_SIZE, 0, &clntAddr, &nSize);
    28. sendto(sock, buffer, strLen, 0, &clntAddr, nSize);
    29. }
    30.  
    31. closesocket(sock);
    32. WSACleanup();
    33. return 0;
    34. }

    代码说明:
    1) 第 12 行代码在创建套接字时,向 socket() 第二个参数传递 SOCK_DGRAM,以指明使用 UDP 协议。

    2) 第 18 行代码中使用htonl(INADDR_ANY)来自动获取 IP 地址。

    利用常数 INADDR_ANY 自动获取 IP 地址有一个明显的好处,就是当软件安装到其他服务器或者服务器 IP 地址改变时,不用再更改源码重新编译,也不用在启动软件时手动输入。而且,如果一台计算机中已分配多个 IP 地址(例如路由器),那么只要端口号一致,就可以从不同的 IP 地址接收数据。所以,服务器中优先考虑使用 INADDR_ANY;而客户端中除非带有一部分服务器功能,否则不会采用。

    客户端 client.cpp:

    
     
    1. #include <stdio.h>
    2. #include <WinSock2.h>
    3. #pragma comment(lib, "ws2_32.lib") //加载 ws2_32.dll
    4.  
    5. #define BUF_SIZE 100
    6.  
    7. int main(){
    8. //初始化DLL
    9. WSADATA wsaData;
    10. WSAStartup(MAKEWORD(2, 2), &wsaData);
    11.  
    12. //创建套接字
    13. SOCKET sock = socket(PF_INET, SOCK_DGRAM, 0);
    14.  
    15. //服务器地址信息
    16. sockaddr_in servAddr;
    17. memset(&servAddr, 0, sizeof(servAddr)); //每个字节都用0填充
    18. servAddr.sin_family = PF_INET;
    19. servAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
    20. servAddr.sin_port = htons(1234);
    21.  
    22. //不断获取用户输入并发送给服务器,然后接受服务器数据
    23. sockaddr fromAddr;
    24. int addrLen = sizeof(fromAddr);
    25. while(1){
    26. char buffer[BUF_SIZE] = {0};
    27. printf("Input a string: ");
    28. gets(buffer);
    29. sendto(sock, buffer, strlen(buffer), 0, (struct sockaddr*)&servAddr, sizeof(servAddr));
    30. int strLen = recvfrom(sock, buffer, BUF_SIZE, 0, &fromAddr, &addrLen);
    31. buffer[strLen] = 0;
    32. printf("Message form server: %s\n", buffer);
    33. }
    34.  
    35. closesocket(sock);
    36. WSACleanup();
    37. return 0;
    38. }

    先运行 server,再运行 client,client 输出结果为:

    Input a string: C语言中文网
    Message form server: C语言中文网
    Input a string: c.biancheng.net Founded in 2012
    Message form server: c.biancheng.net Founded in 2012
    Input a string:


    从代码中可以看出,server.cpp 中没有使用 listen() 函数,client.cpp 中也没有使用 connect() 函数,因为 UDP 不需要连接。

    参考文章:http://c.biancheng.net/view/2359.html

    展开全文
  • sonar服务器端和客户端的安装和使用

    万次阅读 2016-12-14 23:30:28
    sonar服务器端和客户端的安装和使用
    本篇文章将sonar的安装说明一下:
    

    环境 1.JDK:1.8.0_60

       2.sonarqube:sonarqube-5.4版本服务器(mysql5.5包括及以上)

       3.sonar-runner:sonar-runner-2.3客户端

       4.操作系统 win8 64位

    第一步:sonarqube-5.4 解压即可使用,先配置配置文件。

    配置:

    1.sonarqube-5.4\conf中sonar.properties

    1).mysql:先创建一个数据库sonar,这里root是指可以访问这个库的用户。

    sonar.jdbc.username=root
    sonar.jdbc.password=root

    sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

    2.web启动访问端口:

    sonar.web.port=9000

    /sonarqube-5.4/bin/windows-x86-64/StartSonar.bat启动

    3.sonarqube-5.4/logs中可以看到启动日志

    当看到Web server is startedHTTP connector enabled on port 9000Process[web] is up就说明启动好了。

    浏览器输入:http://127.0.0.1:9000/

    4.插件安装

    1)上述 进入http://127.0.0.1:9000/,默认用户名和密码:admin/admin

    点击配置菜单栏-》系统-》更新中心 可以下载插件:中文,checkstyle等,当下载不下来。可以选择手动安装。

    2).手动安装:git网址:https://github.com/SonarQubeCommunity

    realease下载jar,放置到sonarqube-5.4/extensions/plugins下,重新启动sonarqube就会安装了。

    2.第二步:解压sonar-runner-2.3

    配置环境变量到path。

    SONAR_RUNNER_HOME:D:\Program Files\sonar-runner-2.3

    path增加%SONAR_RUNNER_HOME%\bin;

    3.需要使用sonar分析代码的项目中增加配置文件sonar-project.properties

    # Root project information
    sonar.projectKey=allProjects
    sonar.projectName=allProjects
    sonar.projectVersion=1.0.0
     
    # Some properties that will be inherited by the modules
    sonar.sources=src
     
    # List of the module identifiers
    sonar.modules=a,b,c
     
    # Properties can obviously be overriden for
    # each module - just prefix them with the module ID
    a.sonar.projectName=a1
    b.sonar.projectName=b1
    c.sonar.projectName=c1

    ok!配置完成


    下面使用sonar进行代码分析了:

    第一种方法:

    maven:在settings.xml配置sonar中配置

    <profile>

        <id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <sonar.jdbc.url>
                jdbc:mysql://[sonar_db_host]:3306/sonar?useUnicode=trueamp;characterEncoding=utf8
            </sonar.jdbc.url>
            <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
            <sonar.jdbc.username>root</sonar.jdbc.username>
            <sonar.jdbc.password>root</sonar.jdbc.password>
            <sonar.host.url>[SonarQube_host]</sonar.host.url>
        </properties>
    </profile>

    然后使用maven方式,goals为sonar:sonar  第一个sonar表示maven的sonar插件,第二个sonar表示sonar插件中的sonar目标.
    ok


    第二种方法:
    之前描述过安装了
    sonar-runner-2.3客户端而且也配置了环境变量。
    所以可以直接使用命令行的方式进入需要分析代码的项目代码目录下(目录下配置好了sonar-project.properties文件,不然会报错unknown Unable to load component class org.sonar.batch.scan.ProjectLock  You must define the following mandatory properties for 'Unknown': sonar.projectKey, sonar.projectName, sonar.projectVersion),执行sonar-runner ok.

    第三种方法:使用持续化集成工具jenkins/hudson
    详细的操作参见hudson的安装使用篇!



    备注参考网址:
    maven插件:

    http://www.infoq.com/cn/news/2011/05/xxb-maven-8-plugin

    http://www.infoq.com/cn/news/2011/04/xxb-maven-7-plugin

    sonar:

    http://blog.csdn.net/yzhou86/article/details/41170669

    http://www.ituring.com.cn/article/69556 

    maven与sonar结合:goals---->sonar:sonar
    http://www.cnblogs.com/cuiliqiang/archive/2012/10/15/2725146.html

    sonar 原理:
    http://www.cnblogs.com/cuiliqiang/archive/2012/10/17/2727024.html
    sonar 安装:https://my.oschina.net/jiangbianwanghai/blog/478338?p=1
    checkStyle 插件源码https://github.com/checkstyle/sonar-checkstyle
    sonar插件下载:https://github.com/SonarQubeCommunity




    展开全文
  • java之服务器端和客户端之间简单的通信

    千次阅读 多人点赞 2018-05-13 17:04:48
    java之服务器端和客户端之间简单的通信 最近因为作业的需要,老师让用java语言写一个关于服务器端和客户端之间简单的通信,所以就有了这一篇文章 准备工作: 博主是在eclipse工具下进行操作的。 程序代码如下所...

    java之服务器端和客户端之间简单的通信

    最近因为作业的需要,老师让用java语言写一个关于服务器端和客户端之间简单的通信,所以就有了这一篇文章
    准备工作:
    博主是在eclipse工具下进行操作的。
    程序代码如下所示
    1:客户端

    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
    import java.io.*;
    import java.net.*;
    import javax.swing.*;
    
    public class TCPJavaChatClient {
    
        public static void main(String[] args) {
    
            new TCPChatClient().launch();
        }
    }
    
    class TCPChatClient {
        private Frame f = null;
        private TextArea ta = null;
        private TextField tf = null;
        private Button send = null;
        private Button found = null;
        private DataInputStream dis = null;
        private DataOutputStream dos = null;
        private Socket s = null;
    
        public void launch() {
            creatUI();
            connection();
            new TCPClientReader().start();
            new TCPClientWriter().start();
        }
    
        public void creatUI() {
            f = new Frame();
            f.setTitle("客户端");
            tf = new TextField();
            ta = new TextArea();
            Panel p = new Panel(new BorderLayout());
            send = new Button("发送");
            found = new Button("查找");
    
            p.add(tf, BorderLayout.CENTER);
            p.add(send, BorderLayout.EAST);
            p.add(found, BorderLayout.NORTH);
    
            f.add(ta, BorderLayout.CENTER);
            f.add(p, BorderLayout.SOUTH);
    
            f.addWindowListener(new actionA());
            f.setSize(400, 400);
            f.setVisible(true);
        }
    
        public void close() {
            try {
                s.close();
                dis.close();
                dos.close();
            } catch (Exception e) {
                System.exit(-1);
            }
        }
    
        public void connection() {
            try {
                // 这里一旦new Socket成功后,便自动的请求建立连接,参数为目标IP地址和目标端口号  
                s = new Socket("127.0.0.1", 8812);
    
                // 这里是Socket对象调用getInputStream方法获取输入数据,然后用DataInputStream类的对象来接收  
                dis = new DataInputStream(s.getInputStream());
                // 这里Socket对象调用getOutputStream方法来写入数据,然后用DataOutputStream类的对象来接收  
                dos = new DataOutputStream(s.getOutputStream());
            } catch (Exception e) {
                System.out.println("建立连接失败");
                e.printStackTrace();
                System.exit(-1);
            }
        }
    
        class TCPClientReader extends Thread {
            public void run() {
                while (true) {
                    try {
                        String str = dis.readUTF();
                        tf.setText("");
                        ta.append("对方说:" + str + "\n");
                        if (str.equalsIgnoreCase("再见")
                                || str.equalsIgnoreCase("88")) {
                            System.exit(-1);
                        }
                    } catch (Exception e) {
                        JOptionPane.showMessageDialog(f, "已经断开连接");
                        return;
                    }
                }
            }
        }
    
        class TCPClientWriter extends Thread {
            public void run() {
                tf.addActionListener(new TCPClientListener());
                send.addActionListener(new TCPClientListener());
            }
        }
    
        class TCPClientListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                try {
                    String str = tf.getText();// 获取从键盘输入到文本框Text里的内容放到str  
                    tf.setText("");// 设置文本内容为“”,即为空,每进入一次循环就将文本框里面的内容清空,可以再次输入  
                    ta.append("回复:" + str + "\n");// 这里是文本区域调用append方法将输入文本框str内容添加进去,即显示出来  
                    dos.writeUTF(str);
                    if (str.equalsIgnoreCase("再见") || str.equalsIgnoreCase("88")) {
                        System.exit(-1);
                    }
                } catch (Exception e2) {
                    JOptionPane.showMessageDialog(f, "已经断开连接");
                    return;
                }
            }
    
        }
    
    }
    
    class actionA implements WindowListener // 这里是定义一个实现窗口事件监听的类即add后面类名为事件监听器  
    {
        // 下面是对窗口监听类中方法的重写,因为借口中的方法都是抽象的,所以使用时都需要重写,下面是java api文档中窗口事件监听器WindowListener中的相关方法  
    
        // 下面的方法是相应的事件操作,方法名可在API文档中发现  
        public void windowClosing(WindowEvent e)// 关闭   
        {
            System.exit(0);
        }
    
        public void windowOpened(WindowEvent e) {
        };
    
        public void windowIconified(WindowEvent e) {
        };// 最小化   
    
        public void windowDeiconified(WindowEvent e) {
        };// 最大化  
    
        public void windowClosed(WindowEvent e) {
        };
    
        public void windowActivated(WindowEvent e) {
        };
    
        public void windowDeactivated(WindowEvent e) {
        };
    }

    2:服务端

    import java.awt.*;
    import java.awt.Event;
    import java.awt.Window;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
    import java.io.*;
    import java.net.*;
    import javax.swing.*;
    
    //服务器与客户端最根本的区别就是建立连接那里,其他都一样  
    public abstract class TCPJavaChatServer {
    
        public static void main(String[] args) {
    
            new ChatServer1().launch();
    
        }
    
    }
    
    //这里定义一个类完成主方法中的代码(窗口化界面的建立,相应的初始化和相应的方法类调用之类),使得主方法尽量的简洁  
    class ChatServer1{
    
        //这里将需要用到的文本框,按钮,类的对象都定义成属性,可以减少后续代码;  
        private TextArea ta=null;
        private TextField tf=null;
        private Button send=null;
        private DataOutputStream dos=null;
        private DataInputStream dis=null;
        private ServerSocket ss=null;
        private Socket s=null;
        private Frame f=null;
    
        public void launch(){
            //该方法完成四个工作:创建图像界面UI;创建与客户端连接;启动服务器端的读取线程;启动服务器端的写入线程  
            creatUI();
            connection();
            //这里定义两个线程,是因为读写是两个线程进行不能用单线程完成  
            new TCPServerReader().start();
            new TCPServerWriter().start();
        }
        public void creatUI(){
            f=new Frame();
            f.setTitle("服务器端");
            ta=new TextArea();//这个为显示的文本区域  
            tf=new TextField();//这个为输入的文本框  
    
            //先定义一个Panel对象P而且布局管理器为BorderLayout即东西南北布局  
            Panel P=new Panel(new BorderLayout());
            send=new Button("发送");//这里定义一个发送按钮  
    
            P.add(tf,BorderLayout.CENTER);//往P中添加输入文本框tf,放在中间  
            P.add(send,BorderLayout.EAST);//发生按钮放在东边  
    
            f.add(ta,BorderLayout.CENTER);//在f中添加一个文本区域ta放在中间  
            f.add(P,BorderLayout.SOUTH);//而南边放P,即发送文本框和发送按钮都放到最底边  
    
            f.addWindowListener(new actionB());//增加窗口控制事件监听器  
    
            f.setSize(250, 250);//设置窗口大小  
            f.setVisible(true);
        }
    
        //这里是关闭的方法,对输入输出流和接受发送端的关闭异常捕获  
        public void close()
        {
            try{
                dos.close();
                dis.close();
                s.close();
                ss.close();
            }
            catch(Exception e)
            {
                e.printStackTrace();
                System.exit(-1);
            }
    
        }
    
        //建立连接方法,最主要的就是创建ServerSocket对象,然后调用accept方法返回给一个Socket对象,后面就是明确Socket对象s调用方法getInputStream和getOutputStream方法的返回值分别作为new DataInputStream和DataOutstream对象的参数  
        public void connection(){
            try{
                //创建服务器端  
                ss=new ServerSocket(8812);
    
                s=ss.accept();//调用accept方法后才开始不断监听客户端是否有发送连接请求,并且返回一个Socket对象,所以需要用一个Socket对象s来接收  
    
                //这里主要用到DataInputStream和DataOutputStream类中的读取和写入基本类型的方法  
                dis=new DataInputStream(s.getInputStream());
                dos=new DataOutputStream(s.getOutputStream());
            }
            catch(Exception e)
            {
                e.printStackTrace();
                System.out.println("建立连接失败");
                System.exit(-1);
            }
    
        }
        class TCPServerReader extends Thread{
            public void run(){
                //while1的死循环确保不在特定条件下保持通话的进行  
                while(true)
                {
                    try{
                        String str=dis.readUTF();//定义一个String对象str用来接收dis.readUTF方法返回的内容  
                        tf.setText("");//setText让文本框显示信息  
                        ta.append("对方说:"+str+"\n");
                        if(str.equalsIgnoreCase("再见")||str.equalsIgnoreCase("88"))
                        {
                            close();//这里是调用close方法将Socket,ServerSocket,DataInputStream和DataOutputStream的对象都close了  
                            System.exit(-1);
                        }
    
                    }
                    catch(Exception e)
                    {
                        JOptionPane.showMessageDialog(f, "已经断开连接");//这里是swing里面的类方法  
                        return;
                    }
                }
            }
        }
    
        //发送数据的线程,这里需要事件处理即事件监听器,因为要涉及到写入数据并且点发送键发送出去  
        class TCPServerWriter extends Thread{
            public void run(){
                //第一个事件监听器是检测文本输入的事件  
                tf.addActionListener(new TCPListener());
    
                //第二事件监听器是检测按钮发送的事件  
                send.addActionListener(new TCPListener());
    
            }
        }
    
        class TCPListener implements ActionListener{
            public void actionPerformed(ActionEvent e){
                try{
                    String str=tf.getText();//定义一个String类型用来接受文本框tf使用getText方法获取键盘输入的内容  
                    tf.setText("");//这里再次把文本框设置为空,即清空,以便于下次输入  
                    ta.append("回复:"+str+"\n");//文本区域调用append方法获取str内容并显示出来  
                    dos.writeUTF(str);//这里就是dos调用WriteUTF把str写进去,便于传输  
    
                    //这里若双方输入再见或者88,然后调用String的equalsIgnoreCase方法进行对比,该对较方法只比较内容  
                    if(str.equalsIgnoreCase("再见")||str.equalsIgnoreCase("88")){
                        close();
                        System.exit(-1);//若满足则关闭对话框  
                    }
                }
                catch(Exception e2){
                    JOptionPane.showMessageDialog(f, "已经断开连接");//f是对话框,内容为断开连接  
                    return;
                }
            }
        }
    }
    
    
    class actionB implements WindowListener //这里是定义一个实现窗口事件监听的类即add后面类名为事件监听器  
    {
        //下面是对窗口监听类中方法的重写,因为接口中的方法都是抽象的,所以使用时都需要重写,下面是java api文档中窗口事件监听器WindowListener中的相关方法  
    
        //下面的方法是相应的事件操作,方法名可在API文档中发现  
        public void windowClosing(WindowEvent e)//关闭   
        {
            System.exit(0);
        }
        public void windowOpened(WindowEvent e){};
        public void windowIconified(WindowEvent e){};//最小化   
        public void windowDeiconified(WindowEvent e){};//最大化  
        public void windowClosed(WindowEvent e){};
        public void windowActivated(WindowEvent e){};
        public void windowDeactivated(WindowEvent e){};
    }

    3:结果
    这里写图片描述
    这里写图片描述

    展开全文
  • 我们做网络通信的时候需要有通信协议,在进行socket编程的时候有两种通信协议TCP、UDP,这次我们就用简单的方式在一台电脑建立TCP协议的服务器端和客户端并使之进行通信。 服务器端和客户端进行连接,第一步就行在...
  • python使用socket创建udp服务器端和客户端。服务器端为一个时间戳服务器,在接收到客户端发来的数据后,自动回复。客户端,等待用户输入,回车后向服务器发送用户输入的内容。分别在python2.7和python3.6下测试。在...
  • UDP中的服务器端和客户端没有连接 UDP 不像 TCP,无需在连接状态下交换数据,因此基于 UDP 的服务器端和客户端也无需经过连接过程。也就是说,不必调用 listen() 和 accept() 函数。UDP 中只有创建套接字的过程和...
  • 配置虚拟机ip(1)打开虚拟机设置 (2)设置网络连接模式 (3)在Ubuntu下设置ip (4)测试两台电脑是否连通在终端下输入ping 192.168.3.X二、编写服务器端和客户端程序1.客户端代码#include &lt;stdio.h...
  • 网页中的服务器端和客户端脚本

    千次阅读 热门讨论 2016-01-09 20:47:10
    最近看北大青鸟视频的时候有一集里面提到了关于网页中服务器端和客户端脚本的区别,所以特地查了查,觉得这个写的蛮好的,于是重新转载一遍。
  • socket 套接字的使用socket 服务器端和客户端通信,面向TCP的文章链接:https://www.cnblogs.com/liushui-sky/p/5609535.html https://www.cnblogs.com/cy568searchx...
  • 举一个基本的例子来说明服务器端和客户端之间的数据交互,采用TCP协议实现。 题目: 客户端能够接收用户输入的两个数并发送到服务器; 服务器端能够接收到这两个数并将其相加并将结果返回给客户端; 客户端接收到...
  • 基于TCP/IP的套接字服务器端和客户端编程

    万次阅读 多人点赞 2017-04-08 12:38:41
    基于TCP/IP的套接字服务器端和客户端编程
  • 实现服务器端和客户端的Socket通信

    千次阅读 2013-05-30 12:58:18
    使用ServerSocket和Socket实现服务器端和客户端的Socket通信   总结: 1) 建立Socket连接 2) 获得输入/输出流 3)读/写数据 4) 关闭输入/输出流 5) 关闭Socket 1. 编写一个网络应用程序,有客户端与...
  • 上次利用代码在一台电脑实现了TCP协议创建服务器端和客户端并进行通信,这次我们来用UDP协议进行实现。(建议先了解TCP协议如何实现数据传输) (传送门:...
  • 服务器端和客户端工具字符集问题

    千次阅读 2009-10-15 23:28:00
    讨论服务器端和客户端工具字符集问题。这里提到的客户端工具包括isql、exp、imp、obsv等使用了dmapi连接数据库的工具。初始化建库工具initdb有unicode编码参数选项,一般来说,选择默认的unicode=0,即不使用unicode...
  • apt-get install subversion(其实服务器端和客户端都是这一个软件,只是配置不同) 2、在home目录下创建一个名为svn的文件夹(文件夹的名字随便起) mkdir /home/svn 3、创建数据仓库(可以根据需要创建多个...
  • 服务器端是为客户端服务的,客户端就是为真正的“客户”来服务的,所以这两者之间不同,但又密切相连,客户端是请求方或者说是指令发出方,而服务器端是响应方。 1、客户端:在web中是以request对象存在的,发送...
  • 我的百度网盘分享这里有RTX服务器端的安装包和RTX客户端的安装包还有RTX服务器端和客户端的配置文档。注意事项:如果在电脑上配置,要把电脑的IP改成静态IP,DNS指定好。这样方便,也不容易出错。
  • 远程连接SQL Server 2008,服务器端和客户端配置 关键设置: 第一步(SQL2005、SQL2008): 开始-->程序-->Microsoft SQL Server 2008(或2005)-->配置工具-->SQL Server 配置管理器-->SQL Server网络配置-->...
  • Socket之间的连接过程主要可以概括为以下三步: ...客户端提出请求:客户端的Socket向服务器端提出连接请求,此时客户端描述出它所要连接的Socket,指出要连接的Socket的相关属性,然后向服务器端S...
  • 关于服务器端和客户端的区别

    万次阅读 2018-07-18 17:34:41
    首先 百度百科解释: ...客户端客户端(Client)或称为用户,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务...
  • 基于Tcp协议的Socket通讯类似于B/S架构,面向连接,但不同的是服务器端可以向客户端主动推送消息。 使用Tcp协议通讯需要具备以下几个条件: (1).建立一个套接字(Socket) (2).绑定服务器端IP地址及端口号--服务器...
  • 西软服务器端和客户端安装教程V1.0    前言:鉴于集团酒店开业速度迅猛,在系统预培训上存在一定延迟,现在根据实际情况,酒店管理集团在总部经过测试并安装过多台电脑,编写了以下安装流程,力求把所遇到的问题...
  • 服务器端安装安装服务器端:在终端中输入如下命令,回车后,然后按照提示输入sudo apt-get...当前使用的ubuntu镜像中已经安装好了mysql服务器端,无需再安装,并且设置成了开机自启动服务器用于接收客户端的请求、执...
  • TCP的socket的服务器端和客户端实例: 1、服务器端步骤: socket()->bind()->listen()->accept()->read()->write()->close() 2、客户端步骤: socket()->connect()->write()->read()->close() 服务器端代码: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,712
精华内容 22,684
关键字:

服务器端和客户端