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编程的更多相关文章

  1. java网络编程之Socket编程

    概念 网络编程分为BIO(传统IO).NIO.AIO.Socket编程属于BIO这种传统IO. InetAddress java.net.InetAddress是JAVA中管理IP地址的类,常用 pu ...

  2. java网络编程之socket

    网络编程是什么 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据. ...

  3. java网络编程之socket(1)

    网络编程是什么 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据. ...

  4. linux网络编程之socket编程(一)

    今天开始,继续来学习linux编程,这次主要是研究下linux下的网络编程,而网络编程中最基本的需从socket编程开始,下面正式开始学习: 什么是socket: 在学习套接口之前,先要回顾一下Tcp ...

  5. linux网络编程之socket编程(八)

    学习socket编程继续,今天要学习的内容如下: 先来简单介绍一下这五种模型分别是哪些,偏理论,有个大致的印象就成,做个对比,因为最终只会研究一个I/O模型,也是经常会用到的, 阻塞I/O: 先用一个 ...

  6. linux网络编程之socket编程(三)

    今天继续对socket编程进行学习,在学习之前,需要回顾一下上一篇中编写的回射客户/服务器程序(http://www.cnblogs.com/webor2006/p/3923254.html),因为今 ...

  7. linux网络编程之socket编程(二)

    今天继续对socket编程进行研究,这里会真正开如用socket写一个小例子,进入正题: TCP客户/服务器模型:   关于这个模型的流程这里就不多说了,比较容易理解,下面则利用这种模型来编写一个实际 ...

  8. linux网络编程之socket编程(十二)

    今天继续学习socket编程,期待的APEC会议终于在京召开了,听说昨晚鸟巢那灯火通明,遍地礼花,有点08年奥运会的架势,有种冲动想去瞅见一下习大大的真容,"伟大的祖国,我爱你~~~&quo ...

  9. linux网络编程之socket编程(十一)

    今天继续学习socket编程,这次主要是学习超时方法的封装,内容如下: ①.alarm[不常用,了解既可] 它的实现思路是这样的: 但是这种方案有一定的问题,因为闹钟可能会作为其它的用途,这时所设置的 ...

随机推荐

  1. MySQL--数据表操作--行转列和列转行

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11782549.html MySQL--数据表操作: 会用到的查询操作. 1. Limit的用法 ...

  2. onclick="func()"和 onclick = "return func()"区别

    onclick="func()" 表示只会执行 func , 但是不会传回 func 中之回传值onclick = "return func()" 则是 执行 ...

  3. elasticsearch搜索引擎的常用方法

    1.term和termsterm和terms等查询,不会对查询对字段进行分词处理,适合于date.num.id等确切数据进行搜索 如果需要查询keywords,则查询等keywords必须是查询字段中 ...

  4. 【BZOJ3545】Peaks(Kruskal重构树 主席树)

    题目链接 大意 给出有\(N\)个点\(M\)条边的一张图,其中每个点都有一个High值,每条边都有一个Hard值. 再给出\(Q\)个询问:\(v\) \(x\) \(k\) 每次询问查询从点\(v ...

  5. JS快速入门(二)

    目录 JS快速入门(二) 结构图 BOM window对象 open() window子对象 location对象 history对象(了解) navigator 对象 screen对象 BOM 定时 ...

  6. python基础语法_9-1闭包 装饰器补充

    1.闭包的概念 closure:内部函数中对enclosing作用域的变量进行引用,外部函数返回内部函数名   2.函数实质与属性 函数是一个对象:在内存中有一个存储空间 函数执行完成后内部变量回收: ...

  7. ESXI 7.0.0 U2 部署

    文章目录 什么是ESXI? ESXi 的优势 功能特性 部署ESXI 创建虚拟机 开始安装 打开浏览器输入ip进行管理 什么是ESXI? ESXI官网:https://www.vmware.com/c ...

  8. 显式锁之ReentrantLock实现

    下图是Lock接口清单,定义了一些抽象的锁操作.Java本身提供了内部锁机制,那么还需要显示Lock,何用?与内部加锁机制不同,Lock提供了无条件.可轮询.定时.可中断的锁获取操作:所有加锁和解锁的 ...

  9. Python+selenium自动循环扔QQ邮箱漂流瓶

    Python代码如下: # coding=utf-8 from selenium import webdriver from time import sleep from random import ...

  10. 内省机制(操作javaBean的信息)

    内省机制(操作javaBean的信息) ----是不是联想到了反射机制了哈,这两者有什么区别呢? 1.内省机制和反射机制的联系 ■ 其实内省机制也是通过反射来实现的,而反射是对一切类都适合去动态获取类 ...