博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
流式套接字:基于TCP协议的Socket网络编程(案例1)
阅读量:5105 次
发布时间:2019-06-13

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

Socket:套接字

流式套接字:基于TCP协议的Socket网络编程

工作方式:

1.客户端A连接到服务器;

2.服务器建立连接并把客户端A添加到列表;

3.客户端B、C...连接;

4.客户端B送出消息到服务器;

5.服务器将信息发送给客户端B、C...。

要点:

1.如何建立客户端与服务器之间的初始连接;

2.如何传送信息到服务器;

3.如何接收来自服务器的信息。

 

案例:客户端向服务器发送登录请求,服务器收到后回复登录成功信息。

服务器代码:

package com.yh.mySocket;import java.io.*;import java.net.ServerSocket;import java.net.Socket;public class LoginServer {    public static void main(String[] args) {        ServerSocket serversocket = null;        Socket socket = null;        InputStream is = null;        OutputStream os = null;        BufferedReader br = null;        try {            // 创建一个服务器Socket            serversocket = new ServerSocket(5000);            // 使用accept()等待用户的通信            socket = serversocket.accept();            // 获得输入流,获得相应的用户请求            is = socket.getInputStream();            br = new BufferedReader(new InputStreamReader(is));            String info;            while((info = br.readLine())!=null) {                System.out.println(info);            }            // 获得输出流,给客户端发送请求            os = socket.getOutputStream();            String reply = "登陆成功!";            byte[] replys = reply.getBytes();            os.write(replys);        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally {            try {                // 释放资源                os.close();                br.close();                is.close();                socket.close();                serversocket.close();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }}

客户端代码:

package com.yh.mySocket;import java.io.*;import java.net.Socket;import java.net.UnknownHostException;public class LoginClient {    public static void main(String[] args) {        Socket socket = null;        OutputStream os = null;        InputStream is = null;        BufferedReader br = null;        try {            // 创建一个客户端Socket,参数为客户端IP和指定端口号,此处客户端和服务器在同一台电脑,所以IP地址相同            socket = new Socket("localhost",5000);            // 通过输出流,给服务器发送请求            os = socket.getOutputStream();            String info = "用户名:YeHuan; 密码:12345";            byte[] infos = info.getBytes();            os.write(infos);            // 关闭输出流            socket.shutdownOutput();                        // 获得输入流,接收服务器请求            is = socket.getInputStream();            br = new BufferedReader(new InputStreamReader(is));            String reply;            while((reply = br.readLine())!=null) {                System.out.println(reply);            }                    } catch (UnknownHostException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally {            try {                is.close();                os.close();                socket.close();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }}

 

转载于:https://www.cnblogs.com/YeHuan/p/10787332.html

你可能感兴趣的文章
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
MySQL更改默认的数据文档存储目录
查看>>
PyQt5--EventSender
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>
Java 多态 虚方法
查看>>
Unity之fragment shader中如何获得视口空间中的坐标
查看>>
万能的SQLHelper帮助类
查看>>
tmux的简单快捷键
查看>>
[Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
查看>>
Html5 离线页面缓存
查看>>
《绿色·精简·性感·迷你版》易语言,小到不可想象
查看>>
Android打包key密码丢失找回
查看>>
VC6.0调试技巧(一)(转)
查看>>
类库与框架,强类型与弱类型的闲聊
查看>>
webView添加头视图
查看>>
php match_model的简单使用
查看>>
在NT中直接访问物理内存
查看>>
Intel HEX 文件格式
查看>>
SIP服务器性能测试工具SIPp使用指导(转)
查看>>
php_扑克类
查看>>