java 网络编程之Socket编程
1.客户端代码
1 package com.gylhaut.socket;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.io.OutputStream;
8 import java.io.PrintWriter;
9 import java.net.Socket;
10 import java.net.UnknownHostException;
11
12 /**
13 *
14 * 客户端Socket
15 *
16 */
17 public class Client {
18 public static void main(String[] args) {
19 try {
20 //1.创建客户端Socket, 指定服务器地址和端口
21 Socket socket = new Socket("localhost",8888);
22 //2.获取输出流,向服务器端发送信息
23 OutputStream os =socket.getOutputStream();//字节输出流
24 PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
25 pw.write("用户名:admin; 密码:123");
26 pw.flush();
27 socket.shutdownOutput();//关闭输出流
28 String info = null;
29 InputStream is = socket.getInputStream();
30 InputStreamReader isr = new InputStreamReader(is);
31 BufferedReader bReader = new BufferedReader(isr);
32 while ((info = bReader.readLine())!= null) {//循环读取客户端信息
33 System.out.println("我是客户端,服务器说:"+ info);
34 }
35 //
36 bReader.close();
37 isr.close();
38 is.close();
39 pw.close();
40 os.close();
41 socket.close();
42 } catch (UnknownHostException e) {
43 e.printStackTrace();
44 } catch (IOException e) {
45 e.printStackTrace();
46 }
47 }
48 }
2.服务端代码
1 package com.gylhaut.socket;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.io.OutputStream;
8 import java.io.PrintWriter;
9 import java.net.ServerSocket;
10 import java.net.Socket;
11 /*
12 * 基于TCP协议的Socket通信,实现用户登录
13 * 服务器端
14 */
15 public class Server {
16 public static void main(String[] args){
17 try {
18 //1.创建一个服务器端的Socket,即ServerSocket,指定绑定的端口,并监听客户端
19 ServerSocket serverSocket = new ServerSocket(8888);
20 //2.调用accept()方法开始监听,等待客户端的连接
21 System.out.println("***服务器即将启动,等待客户端的连接***");
22 Socket socket = serverSocket.accept();
23 //3.获取输入流,并读取客户端信息
24 InputStream is = socket.getInputStream();//字节输入流
25 InputStreamReader isr = new InputStreamReader(is);//将字节流转换为字符流
26 BufferedReader bReader = new BufferedReader(isr);
27 String info = null;
28 while ((info = bReader.readLine())!= null) {//循环读取客户端信息
29 System.out.println("我是服务器,客户端说:"+ info);
30 }
31 socket.shutdownInput();//关闭输入流
32 //4.获取输出流,响应客户端的请求
33 OutputStream os = socket.getOutputStream();
34 PrintWriter pWriter = new PrintWriter(os);//包装为打印流
35 pWriter.write("欢迎您!");
36 pWriter.flush();//调用flush 方法将刷新缓存
37
38 //5.关闭资源
39 pWriter.close();
40 os.close();
41 bReader.close();
42 isr.close();
43 is.close();
44 socket.close();
45 serverSocket.close();
46 } catch (IOException e) {
47 e.printStackTrace();
48 }
49 }
50 }
java 网络编程之Socket编程的更多相关文章
- java网络编程之Socket编程
概念 网络编程分为BIO(传统IO).NIO.AIO.Socket编程属于BIO这种传统IO. InetAddress java.net.InetAddress是JAVA中管理IP地址的类,常用 pu ...
- java网络编程之socket
网络编程是什么 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据. ...
- java网络编程之socket(1)
网络编程是什么 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据. ...
- linux网络编程之socket编程(一)
今天开始,继续来学习linux编程,这次主要是研究下linux下的网络编程,而网络编程中最基本的需从socket编程开始,下面正式开始学习: 什么是socket: 在学习套接口之前,先要回顾一下Tcp ...
- linux网络编程之socket编程(八)
学习socket编程继续,今天要学习的内容如下: 先来简单介绍一下这五种模型分别是哪些,偏理论,有个大致的印象就成,做个对比,因为最终只会研究一个I/O模型,也是经常会用到的, 阻塞I/O: 先用一个 ...
- linux网络编程之socket编程(三)
今天继续对socket编程进行学习,在学习之前,需要回顾一下上一篇中编写的回射客户/服务器程序(http://www.cnblogs.com/webor2006/p/3923254.html),因为今 ...
- linux网络编程之socket编程(二)
今天继续对socket编程进行研究,这里会真正开如用socket写一个小例子,进入正题: TCP客户/服务器模型: 关于这个模型的流程这里就不多说了,比较容易理解,下面则利用这种模型来编写一个实际 ...
- linux网络编程之socket编程(十二)
今天继续学习socket编程,期待的APEC会议终于在京召开了,听说昨晚鸟巢那灯火通明,遍地礼花,有点08年奥运会的架势,有种冲动想去瞅见一下习大大的真容,"伟大的祖国,我爱你~~~&quo ...
- linux网络编程之socket编程(十一)
今天继续学习socket编程,这次主要是学习超时方法的封装,内容如下: ①.alarm[不常用,了解既可] 它的实现思路是这样的: 但是这种方案有一定的问题,因为闹钟可能会作为其它的用途,这时所设置的 ...
随机推荐
- centos安装php7.2
目前php最高稳定版本是7.2,wordpress中也建议采用该版本. 若直接采用centos中的yum安装:sudo yum -y install php,版本是5.4,远远不够,因此我们要手动更新 ...
- 解决sublime代码不提示的问题
如果想让sublime在你输入标签的过程中给你提示,需要按要求开启以下功能. 1.开启代码自动提示功能
- GoogleGoogleGoogle!!!! 百度云资源
一些谷歌镜像地址,够用了 Google 镜像站搜集 田飞雨 » Google 镜像站搜集 https://github.com/sxyx2008/DevArticles/issues/99 http: ...
- Web集群调度器-Haproxy
Web集群调度器-Haproxy 目录 Web集群调度器-Haproxy 一.Web集群调度器 1.常用的Web集群调度器 2. Haproxy应用分析 3. Haproxy的主要特性 4. 常用集群 ...
- 问题描述 ens33 不见了
事情是这样紫的 我今天用Xshell 连接Linux 发现连接不上去百思不得其解,然后就去Linux里看 ifconfig 的配置,然后发现 ens33居然不见了,就只有lo 和 virbr() , ...
- 巧用python进行接口自动化测试
一.接口自动化测试的流程 1.需求分析 1.1请求(url,方法.数据) 2.挑选需要做自动化测试的接口 3.设计自动化测试用例 4.搭建自动化测试环境 5.设计自动化执行框架(报告.参数化. 用例执 ...
- 简述redis特点及其应用场景
1. Redis八大特点 1.1. 速度快 说到Redis的速度快,大家的第一反应一定是内存读取,那是肯定的,但如果面试的时候仅仅说到这点,那还是远远不够的,至少还有以下三点要补充: Redis是用C ...
- Fiddler监听Https请求响应
Fiddler问题 - creation of the root certificate was not successful 解决办法: http://localhost:8888/ 安装证书 ...
- python内置模块之re模块
内容概要 re模块常用方法 findall search match re模块其他方法 split sub subn compile finditer findall 对无名分组优先展示 re实战之爬 ...
- 模块和包—Day28
一.模块 模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. import的过程:import一个模块的时候,首先创建一个属于my_module的内存空间,加载my_ ...