创建服务器端serverSocket

 import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket; /**
* 服务端
* @author Administrator
*
*/
public class Server { public static void main(String[] args) throws IOException {
//创建一个服务器端socket,指定绑定的端口号,并监听此端口
ServerSocket serverSocket = new ServerSocket(8888);
//调用accept()方法开始监听,等待客户端的连接
System.out.println("**********服务器即将启动,等待客户端的连接*************");
Socket socket = serverSocket.accept();
//获取输入流,并读取客户端信息
InputStream inp = socket.getInputStream();
//把字节流转换成字符流
InputStreamReader isr = new InputStreamReader(inp);
//为字符流增加缓冲区
BufferedReader bfr = new BufferedReader(isr);
String info = null;
while((info=bfr.readLine())!=null){//循环读取数据
System.out.println("我是服务器,客户端说:"+info);
}
socket.shutdownInput();//关闭输入流
//向客户端传递的信息
OutputStream ots = socket.getOutputStream();
PrintWriter pw = new PrintWriter(ots);
pw.write("欢迎登陆");
pw.flush(); //关闭资源
pw.close();
ots.close();
bfr.close();
isr.close();
inp.close();
socket.close();
serverSocket.close(); } }

创建客户端socket

 import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException; /**
* 客户端
* @author Administrator
*
*/
public class Client { public static void main(String[] args) {
try {
//创建一个客户端socket
Socket socket = new Socket("localhost",8888);
//向服务器端传递信息
OutputStream ots = socket.getOutputStream();
PrintWriter pw = new PrintWriter(ots);
pw.write("用户名:admin;密码:123");
pw.flush();
//关闭输出流
socket.shutdownOutput();
//获取服务器端传递的数据
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String info = null;
while((info=br.readLine())!=null){
System.out.println("我是客户端,服务器说:"+info);
}
//关闭资源
br.close();
isr.close();
is.close();
pw.close();
ots.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} }

先启动服务器端,再启动客户端

服务器端打印结果为

**********服务器即将启动,等待客户端的连接*************
我是服务器,客户端说:用户名:admin;密码:123

客户端打印结果

我是客户端,服务器说:欢迎登陆

Java中使用Socket实现服务器端和客户端通讯的更多相关文章

  1. 在Java中使用Socket模拟客户端和服务端(多线程)

    1:Socket与ServerSocket的交互 2.Socket和ServerSocket介绍 Socket 构造函数 Socket() Socket(InetAddress address, in ...

  2. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  3. 读懂Java中的Socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  4. 读懂Java中的Socket编程(转)

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  5. java中的socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  6. Java中的Socket用法

    转发链接:https://www.cnblogs.com/zhanglei93/p/6217384.html (1)Java中的Socket用法 Java中的Socket分为普通的Socket和Nio ...

  7. Java中使用Socket连接判断Inputstream结束,java tcp socket服务端,python tcp socket客户端

    最近在试着用java写一个socket的服务器,用python写一个socket的客户端来完成二者之间的通信,但是发现存在一个问题,服务器方面就卡在读取inputsream的地方不动了,导致后面的代码 ...

  8. java中有关socket通信的学习笔记

    最近做的项目中使用到了一些基于java的socket长连接的一些功能,用来穿透有关行业的网闸.用到了也就学习了一下,下面是对学习内容的一个笔记,记录一下也希望有兴趣的同学可以参考一下,加深对javas ...

  9. iOS socket Stream 服务器端 及 客户端 演示

    iOS socket Stream 测试环境,mac osx 10.8 一:建立服务器端 由于mac osx10.8 已经集成 python2和 Twisted,我们可以直接利用此,构建一个简单的so ...

随机推荐

  1. Java面试笔记

    1.&和&& if(str != null& !str.equals("")){ System.out.println("ok" ...

  2. 并发下常见的加锁及锁的PHP具体实现代码(转)

    在最近的项目中有这样的场景 1.生成文件的时候,由于多用户都有权限进行生成,防止并发下,导致生成的结果出现错误,需要对生成的过程进行加锁,只容许一个用户在一个时间内进行操作,这个时候就需要用到锁了,将 ...

  3. Mysql利用mysql_multi配置一台主机多个实例(转)

    在Mysql官方帮助文档中,详细记录中Mysql的启动方式,有mysqld_safe.mysql.server.mysql_multi这三种.关于mysql_multi的介绍: Mysqld_mult ...

  4. idea中的svn配置

    idea的使用之svn篇--有图超详细 http://ylq365.iteye.com/blog/1955291

  5. vim关于 引号和 括号的 高效操作-很好很强大的!

    http://blog.csdn.net/bigshady/article/details/6019963 对括号匹配, 进行跳转, 使用的是%. 匹配的括号, 都会被高亮显示, 但是: 根据光标的 ...

  6. 大熊君大话NodeJS之------Buffer模块

    一,开篇分析 所谓缓冲区Buffer,就是 "临时存贮区" 的意思,是暂时存放输入输出数据的一段内存. JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一 ...

  7. <s:url>指向的Action只执行一次,清除浏览器缓存文件后又可执行一次。

    Action中的方法仅为静态变量赋值,而其他访问数据库的Action可以被重复执行. 起初判断可能是静态变量的内存机制导致不能重复执行. 然后发现清楚浏览器缓存文件后又可以执行一次了,看来原因在Jsp ...

  8. nginx专题

    1.Nginx和php性能优化相关 专家向磊http://slaytanic.blog.51cto.com/2057708/1173021 2.Puppet利用Nginx多端口实现负载均衡http:/ ...

  9. Mahout 的安装

    Mahout 的安装 Mahout是Hadoop的一种高级应用.运行Mahout需要提前安装好Hadoop,Mahout只在Hadoop集群的NameNode节点上安装一个即可,其他数据节点上不需要安 ...

  10. NoSuchMethodException问题总结

    1.编译异常,这个很容易发现并解决: method真的没有 替换jar包没有clean project. 2.编译正常,运行报错 这是一个遇到之后让人纳闷的异常,脑袋不转弯的时候真的容易被卡住.这时只 ...