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. 任意文件上传漏洞syr

    任意文件上传漏洞 先来几个一句话木马看看 <%execute(request("value"))%> #asp木马 <?php eval($_POST[" ...

  2. python的namespace的理解

    Python命名空间的本质   python中的名称空间是名称(标识符)到对象的映射. 具体来说,python为模块.函数.类.对象保存一个字典(__dict__),里面就是重名称到对象的映射. -- ...

  3. 了解selenium这个工具

    selenium 也不是简单一个工具,而是由几个工具组成,每个工具都有其特点和应用场景.   selenium IDE selenium IDE 是嵌入到Firefox浏览器中的一个插件,实现简单的浏 ...

  4. linux中可以查看端口占用的方法

    在自己搭建的服务器中,经常容易出现端口被占用的问题,那么怎么知道自己的端口是否被占用了呢? 可以使用下面的方法: linux中可以查看端口占用的方法. netstat -ant | grep 80 ( ...

  5. CentOS7 下 ldap 部署

    环境准备 # 关闭防火墙以及selinux,生产环境中,以实际需求为准 [root@localhost ~]# hostnamectl --static set-hostname ldap-serve ...

  6. 使用Hot Chocolate和.NET 6构建GraphQL应用(9) —— 实现Mutate更新数据

    系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在上一篇文章中,我们演示了如何使用Hot Chocolate进行GraphQL的Mutate新增数据,这篇文 ...

  7. python中继承的语法及案列

    案例: 1 class Chinese: # 类的创建,类名首字母大写 2 eye = 'black' # 类属性的创建 3 4 def eat(self): # 实例方法创建 5 print('吃饭 ...

  8. Wi-Fi DFS与TPC介绍

    DFS与TPC是wifi认证的其中一项测试内容,如果不需要DFS功能,可以不进行测试,但是某些属于DFS频段的wifi信道则不允许使用. 1. 什么是WIFI Auto DFS? 通俗的说就是:躲雷达 ...

  9. 还不会使用linux?快来通过VMware安装centos系统吧~

    1.前言 Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发, ...

  10. 入职钉钉接近半年,谈谈自身的新人landing体会

    一.适应新环境 到了一个新环境里,身边的一切都比较陌生,与同事和领导都不太熟,一开始说话说不到一起都比较正常.在和同事吃饭的时候,多听多参与聊天,主动一些,逐渐熟悉起来就好了. 另外,我的工作台bas ...