博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
服务器端与客户端TCP连接入门(二)
阅读量:6653 次
发布时间:2019-06-25

本文共 2741 字,大约阅读时间需要 9 分钟。

1、服务器端程序

package Socket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;public class EchoServer {    public static void main(String[] args) throws Exception {                ServerSocket server =null;//定义ServerSocket对象        Socket client=null;//定义socket对象,表示客户端        PrintStream out=null;//声明打印流对象,以向客户端输出        BufferedReader buf = null;//用于接收客户端发来的信息        server = new ServerSocket(8888);//此服务器在8888端口进行监听        boolean f=true;        while(f){            System.out.println("服务器运行,等待客户端连接");            client=server.accept();//接收客户端连接            buf = new BufferedReader(new InputStreamReader(client.getInputStream()));//得到客户端的输入信息            out= new PrintStream(client.getOutputStream());            //循环读取buf所有内容            boolean flag=true;            while(flag){                String str=buf.readLine();                if(str==null||"".equals(str)){                    flag=false;//结束循环                }                else{                    if("bye".equals(str)){                        flag=false;                    }                    else                    {                        out.println("ECHO:"+str);//正常结束,向客户端回显信息                    }                }            }            out.close();            client.close();                    }        server.close();    }}

2、客户端程序

package Socket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket;import java.net.UnknownHostException;public class EchoClient {    public static void main(String[] args) throws Exception {                Socket client=null;//声明Socket对象        client=new Socket("localhost",8888);//指定连接的主机和端口        BufferedReader buf=null;//接收服务器端发送回来的信息        PrintStream out=null;//输出流,向服务器端发送信息        BufferedReader input=null;        input=new BufferedReader(new InputStreamReader(System.in));//从键盘接收数据        out = new PrintStream(client.getOutputStream());//向服务器端发送信息        buf= new BufferedReader(new InputStreamReader(client.getInputStream()));//接收服务器端输入信息        boolean flag=true;        while(flag){            System.out.println("输入信息:");            String str=input.readLine();//从键盘接收数据            out.println(str);    //向服务器端输入信息            if("bye".equals(str)){    //如果输入bye,结束操作                flag=false;            }            else{                String echo=buf.readLine();//接收ECHO信息                System.out.println(echo);//输出ECHO信息            }        }        client.close();        buf.close();    }}

 效果如下:

 

此时,服务器每次只能有一个用户连接,属于单线程,要让多个用户连接服务器,要使用多线程...

转载于:https://www.cnblogs.com/Donnnnnn/p/6197475.html

你可能感兴趣的文章
org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: unknown encoding
查看>>
我的友情链接
查看>>
innodb_buffer_pool_size 大小建议
查看>>
Delphi XE2 之 FireMonkey 入门(25) - 数据绑定: TBindingsList: 表达式的灵活性及表达式函数...
查看>>
事件自调用 - 回复 maxcool 的问题
查看>>
Horizon View 6.0 基于RDS的应用发布
查看>>
ubuntu下系统重启dns就被清空的解决方案
查看>>
Ant Examples
查看>>
建立C语言动态链接库
查看>>
红帽企业存储管理之iscsi简单应用
查看>>
Rsync安装使用
查看>>
更改Linux系统日志的时间格式
查看>>
FC-SAN vs. IP-SAN详细技术比较
查看>>
sequioadb源码分析
查看>>
基于嵌入式Linux系统设备驱动程序的开发
查看>>
【smart-transform】取自 Atom 的 babeljs/coffeescript/typescript 智能转 es5 库
查看>>
基于S3C6410的Touch驱动详解
查看>>
使用Jekyll托管github pages的好处
查看>>
java、javaw和javaws的区别
查看>>
Git 远程分支
查看>>