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

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

注意,我是用了两个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://download.csdn.net/detail/baiyuliang2013/7041211

Socket实现单客户端与服务器对话功能的更多相关文章

  1. C++Socket通信(客户端和服务器)

    win32控制台版 获取本机IP: cmd:       ipconfig/all 我写的是一个服务器和客户端点对点的信息传递(实现相互的可以适当更改代码): 服务器发送给客户端的是一个结构体数据 t ...

  2. socket编程:客户端与服务器间的连接以及各函数的用法

    在认真的看UNP之前,一直被socket编程说的云里雾里,今天我要让大家从整天上认识socket编程,让我们知道socket编程的整个流程和各个函数的用法.这样:我们在写一些简单的socket编程时就 ...

  3. 聊天室(C++客户端+Pyhton服务器)2.基本功能添加

    根据之前的框架添加新的功能 登录 点击相关按钮 // 登录按钮的响应void CMainDialog::OnBnClickedLogin(){ // 1. 获取用户输入的数据 UpdateData(T ...

  4. Socket与SocketServer结合多线程实现多客户端与服务器通信

    需求说明:实现多客户端用户登录,实现多客户端登录一般都需要使用线程技术: (1)创建服务器端线程类,run()方法中实现对一个请求的响应处理: (2)修改服务器端代码,实现循环监听状态: (3)服务器 ...

  5. Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

    转载地址:http://blog.csdn.net/mad1989/article/details/9147661 ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当 ...

  6. Socket TCP客户端和服务器的实现

    import java.io.*; import java.net.Inet4Address; import java.net.InetSocketAddress; import java.net.S ...

  7. 在客户端先通过JS验证后再将表单提交到服务器

    问题:想要在客户端先通过JS验证后再将表单提交到服务器 参考资料: jQuery 事件 - submit() 方法 试验过程: 服务器端使用PHP <html> <head> ...

  8. Java 使用 Socket 实现客户端和服务器的信息交互

    服务器 public class Server{ private ServerSocket serverSocket; private Socket socket; private BufferedR ...

  9. Java Socket聊天室编程(二)之利用socket实现单聊聊天室

    这篇文章主要介绍了Java Socket聊天室编程(二)之利用socket实现单聊聊天室的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在上篇文章Java Socket聊天室编程(一)之 ...

随机推荐

  1. Random Forest vs GradientBoostingDecisionTree

    相同 随机森林和GBDT都属于集成算法,base model都是决策树. 不同 随机森林 随机森林是决策树的bagging. bagging通过重复对原训练数据集上进行有放回地采样生成的数据集用bas ...

  2. 深入理解委托(Delegate)

    前言 委托其实一直以来都感觉自己应该挺熟悉的,直到最近又去翻了翻 CLR via C#,感觉我之前的理解可能还有失偏颇.在这记录一下. 之前文章的链接: 接口和委托的泛型可变性 C#高级编程笔记 De ...

  3. WebApi的安全性及其解决方案

    一.前言   WebApi的小白想要了解一些关于WebApi安全性相关的问题,本篇文章是整理一些关于WebApi安全.权限认证的文章. 二.内容正文  2.1 不进行验证  客户端调用:http:// ...

  4. 3064: Tyvj 1518 CPU监控

    注意这题要维护历史最大加和历史最大覆盖 /************************************************************** Problem: 3064 Us ...

  5. 【无语凝噎(wordless)】

    ·题目:         西施与范蠡泛舟而去……不对,场景不对,咳咳.在甄嬛前往蓬莱洲之前,她与皇上在碧桐书院告别.为了这可能会长达数月的离别,两个人都似乎有很多话要对对方说,却都无语凝噎.这时,皇上 ...

  6. Xtrabackup2.4.8备份、还原、恢复Mysql5.7.19实操

    环境:CentOS 6.7  + Mysql 5.7.19 + Xtraback 2.4.8 innobackupex常用参数: --user=USER 指定备份用户,不指定的话为当前系统用户 --p ...

  7. gray-code (格雷码)

    题目描述 The gray code(格雷码) is a binary numeral system where two successive values differ in only one bi ...

  8. C# 枚举在项目中使用心得

    阅读目录 基本介绍 使用注意 使用方法 扩展用法     本文主要是我在项目中对C#枚举的使用心得,如有不足的地方欢迎您指出. 一.基本介绍  枚举是由一组特定常量构成的一组数据结构,是值类型的一种特 ...

  9. Automap sqlalchemy.ext.automap 自动映射数据库表结构

    from sqlalchemy.ext.automap import automap_base from sqlalchemy.orm import Session from sqlalchemy i ...

  10. Mybatis Generator 代码生成配置

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...