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[不常用,了解既可] 它的实现思路是这样的: 但是这种方案有一定的问题,因为闹钟可能会作为其它的用途,这时所设置的 ...
随机推荐
- 任意文件上传漏洞syr
任意文件上传漏洞 先来几个一句话木马看看 <%execute(request("value"))%> #asp木马 <?php eval($_POST[" ...
- python的namespace的理解
Python命名空间的本质 python中的名称空间是名称(标识符)到对象的映射. 具体来说,python为模块.函数.类.对象保存一个字典(__dict__),里面就是重名称到对象的映射. -- ...
- 了解selenium这个工具
selenium 也不是简单一个工具,而是由几个工具组成,每个工具都有其特点和应用场景. selenium IDE selenium IDE 是嵌入到Firefox浏览器中的一个插件,实现简单的浏 ...
- linux中可以查看端口占用的方法
在自己搭建的服务器中,经常容易出现端口被占用的问题,那么怎么知道自己的端口是否被占用了呢? 可以使用下面的方法: linux中可以查看端口占用的方法. netstat -ant | grep 80 ( ...
- CentOS7 下 ldap 部署
环境准备 # 关闭防火墙以及selinux,生产环境中,以实际需求为准 [root@localhost ~]# hostnamectl --static set-hostname ldap-serve ...
- 使用Hot Chocolate和.NET 6构建GraphQL应用(9) —— 实现Mutate更新数据
系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在上一篇文章中,我们演示了如何使用Hot Chocolate进行GraphQL的Mutate新增数据,这篇文 ...
- python中继承的语法及案列
案例: 1 class Chinese: # 类的创建,类名首字母大写 2 eye = 'black' # 类属性的创建 3 4 def eat(self): # 实例方法创建 5 print('吃饭 ...
- Wi-Fi DFS与TPC介绍
DFS与TPC是wifi认证的其中一项测试内容,如果不需要DFS功能,可以不进行测试,但是某些属于DFS频段的wifi信道则不允许使用. 1. 什么是WIFI Auto DFS? 通俗的说就是:躲雷达 ...
- 还不会使用linux?快来通过VMware安装centos系统吧~
1.前言 Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发, ...
- 入职钉钉接近半年,谈谈自身的新人landing体会
一.适应新环境 到了一个新环境里,身边的一切都比较陌生,与同事和领导都不太熟,一开始说话说不到一起都比较正常.在和同事吃饭的时候,多听多参与聊天,主动一些,逐渐熟悉起来就好了. 另外,我的工作台bas ...