单客户端,顾名思义,就是客户端只有一个用户去访问服务器,然后服务器根据该客户请求返回信息,先看下效果图:

服务端(左)和客户端(右):

注意,我是用了两个eclipse,一个只放服务端文件,一个只放客户端文件,先启动服务端,再启动客户端,客户端连接的ip地址即服务端ip,端口可以自己定义。

客户端LoginClient代码:

package com.android.socket.server;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.ObjectOutputStream;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.net.Socket;

import java.net.UnknownHostException;

import java.util.Scanner;

/**

*客户端

*/

public class LoginClient {

//向服务器发送请求

public static void main(String[] args) throws UnknownHostException, IOException {

while(true){

Scanner scan=new Scanner(System.in);

Socket soc=new Socket("192.168.1.108",6666);//IP为服务器的地址

BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(soc.getOutputStream()));//输出流,写入

BufferedReader br=new BufferedReader(new InputStreamReader(soc.getInputStream()));//输入流,读取

String str=scan.next();

bw.write(" "+str);

bw.flush();

soc.shutdownOutput();//通知服务器已经写完,可以读取了

String line=br.readLine();

while(line!=null){

System.out.println(line);

line=br.readLine();

}

br.close();

bw.close();

soc.close();

}

}

}

服务端LoginServer代码:

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.Scanner;

/**

* 服务器

*/

public class LoginServer {

public static void main(String[] args) throws IOException {

while(true){

Scanner scan=new Scanner(System.in);

//ServerSocket相当于一个Socket母体,当监听到客户端有Socket发来请求的时候,服务器的ServerSocket会创建一个与之通信的Socket

ServerSocket ss=new ServerSocket(6666);// 识别客户端

Socket soc=ss.accept();//为客户端创建Socket通信点

BufferedReader br=new BufferedReader(new InputStreamReader(soc.getInputStream()));//客户端传过来的是字节流,通过转换流将其转换为字符流

String line=br.readLine();//读取客户端传来的字符流

while(line!=null){

System.out.println(line);

line=br.readLine();

}

BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(soc.getOutputStream()));//输出流,向客户端回复

String str=scan.next();

bw.write(" "+str);

bw.flush();

bw.close();

br.close();

soc.close();

ss.close();

}

}

}

首先,客户端用BufferedWriter以流的形式向服务端发送请求,并以soc.shutdownOutput();结束表示请求信息已经完毕,通知服务端可以读取,然后服务端在监听到来自某客户端的请求时,会通过BufferedReader来读取客户端发来的请求信息,步骤大致是这样的,代码中我已经注释的很清楚了,大家可以自己研究,这个是比较简单的也比较基础的Socket通讯实现。大家也可以在这里下载以上代码:

原文:http://blog.csdn.net/baiyuliang2013/article/details/21242037

java实现客户端 与服务端的对话_Socket实现单客户端与服务器对话功能相关推荐

  1. 例子 客户端_服务端也是可以主动向客户端推送数据的--WebSocket

    简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议.WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范.WebSocket API也 ...

  2. php winform通信,C# Winform 通过Socket实现客户端和服务端TCP通信

    操作界面如下: 1.声明Socket 第一个参数:寻址方式,第二个参数:传输数据的方式,第三个参数:通信协议 Socket socket = new Socket(AddressFamily.Inte ...

  3. JAVA 网络编程 Socket 详细说明,实现客户端和服务端相互推送消息

    客户端代码: package com.lcx.socket;import java.io.BufferedReader; import java.io.BufferedWriter; import j ...

  4. Netty实战 IM即时通讯系统(十二)构建客户端与服务端pipeline

    Netty实战 IM即时通讯系统(十二)构建客户端与服务端pipeline 零. 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 客户端启动流程 实战: 客户端和服务端双向 ...

  5. Netty实战 IM即时通讯系统(十)实现客户端和服务端收发消息

    Netty实战 IM即时通讯系统(十)实现客户端和服务端收发消息 零. 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 客户端启动流程 实战: 客户端和服务端双向通信 数据 ...

  6. Netty实战 IM即时通讯系统(六)实战: 客户端和服务端双向通信

    ## Netty实战 IM即时通讯系统(六)实战: 客户端和服务端双向通信 零. 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 实战: 客户端和服务端双向通信 数据传输载 ...

  7. Java--Socket客户端,服务端通信

    1.客户端接受服务端的消息并打印: 客户端: import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...

  8. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  9. Java Websocket实例【服务端与客户端实现全双工通讯】

    Java Websocket实例[服务端与客户端实现全双工通讯] 现很多网站为了实现即时通讯,所用的技术都是轮询(polling).轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP ...

最新文章

  1. 更换AppleWWDRCA.cer证书
  2. 大数据中心周边辐射大吗_PETCT有辐射,PETCT对陪同人员的影响大吗?
  3. 心路历程(五)-find work and find house
  4. SystemKit 系统分析工具
  5. class(一)--类的创建
  6. hog函数的用法 python_Python常见内置函数用法(三)
  7. JavaEE实战班第九天
  8. table id=datatable - Requested unknown parameter 'tname' for row 0, column 4. 解决
  9. Jenkins的系统设置
  10. Oracle Enterprise Manager Cloud Control 12c 概述
  11. 重装 IDEA 再也不怕了,一招搞定配置同步!
  12. CS229的简单梳理(待续)
  13. 银联支付接口申请流程-傲付宝
  14. 6.泛型方法:什么是泛型方法???
  15. centos 20T硬盘(超过16T)分区和格式化
  16. globalThis is not defined 解决方案
  17. 【微服务】Nacos 注册中心的设计原理
  18. 人机交互选择判断练习题
  19. 爬虫--电影天堂案例(二级页面抓取)
  20. Linux基础学习总结,入门

热门文章

  1. 2023年的COSO,会有什么不一样?
  2. 大数据运营之财务数据模型设计
  3. 解决Windows 10不显示打字框
  4. 小白从0学习推荐系统 ---01 推荐系统简介
  5. Python笔记: 执行run.py文件
  6. python制作小帆船保姆级教学
  7. 问题记录:SyntaxError: Missing parentheses in call to ‘print‘.
  8. Web站相关知识与Web程序的访问流程
  9. IOS – OpenGL ES 调节图像白平衡/色温 GPUImageWhiteBalanceFilter
  10. 浏览器:免费小说的“下一站”