Java中重点之一就是服务器与客户端的连接,因为是在同一台PC上,所以就设置服务器的地址为“localhost”,注意,我当时试着设置其他名称,但都不行,这个原因还请老司机告一下。另外还要注意,服务端先于客户端运行,废话不多说,上代码了

package com.myinfo;

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; public class Server {
private static Socket accept; /**
* 服务器端的应用
*
* @param args
*/
public static void main(String[] args) { try {
// 1.创建Server服务器端的连接,并指定监听端口号
ServerSocket server = new ServerSocket(8008);
// 2.建立accept()连接
System.out.println("服务器即将连接,等待客户端");
Socket socket = server.accept();
// 获取客户端输入流
InputStream is = socket.getInputStream();
// 转换成字符流
InputStreamReader isr = new InputStreamReader(is);
// 添加缓冲流
BufferedReader br = new BufferedReader(isr); String data = null;
while ((data = br.readLine()) != null) {
// 循环读取
System.out.println("我是服务器端,客户端说:" + data);
}
socket.shutdownInput();//关闭输入流
//注意,此时应先关闭输入流之后才能获取输出流
// 获取服务器端的输出流,响应客户端
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os); // 包装流
pw.write("你好,客户端");
pw.flush(); // 关闭可关闭的资源
os.close();
pw.close(); is.close();
isr.close();
br.close();
server.close(); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }

  接下来看客户端

package com.myinfo;

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; public class Client { /**
* 客户端
*
* @param args
*/ public static void main(String[] args) { try {
// 1.建立客户端,输入服务器的地址以及端口
Socket socket = new Socket("localhost", 8008);
// 获取输出流,向服务器打印信息
OutputStream os = socket.getOutputStream();
// 包装成打印流
PrintWriter pw = new PrintWriter(os);
pw.write("用户名:Admin 密码:ck");
pw.flush();
socket.shutdownOutput(); //关闭输出流
//此时应该先关闭输出流然后在开启输入流
// 获取客户端的输入流
InputStream is = socket.getInputStream();
// 转换成字符流
InputStreamReader isr = new InputStreamReader(is);
BufferedReader rd = new BufferedReader(isr); // 转换成缓冲流 String data = null;
while ((data = rd.readLine()) != null) {
// 循环读取
System.out.println("我是客户端,服务器端说:" + data);
} // 关闭可关闭的资源
rd.close();
is.close();
isr.close();
pw.close(); os.close();
pw.close(); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }

      小白一枚,不足之处,望请指正

Java中的服务器与客户端的简单连接的更多相关文章

  1. 2) broadcast,这是启动完毕之后,集群中的服务器开始接收客户端的连接一起工作的过程,如果客户端有修改数据的改动,那么一定会由leader广播给follower,所以称为”broadcast”.

    2) broadcast,这是启动完毕之后,集群中的服务器开始接收客户端的连接一起工作的过程,如果客户端有修改数据的改动,那么一定会由leader广播给follower,所以称为”broadcast” ...

  2. 一个 Java 的 Socket 服务器和客户端通信的例子

    一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程: 先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客户端发出连接请 ...

  3. 用好Java中的枚举真的没有那么简单

    1.概览 在本文中,我们将看到什么是 Java 枚举,它们解决了哪些问题以及如何在实践中使用 Java 枚举实现一些设计模式. enum关键字在 java5 中引入,表示一种特殊类型的类,其总是继承j ...

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

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

  5. Java中使用Oracle的客户端 load data和sqlldr命令执行数据导入到数据库中

    Windows环境下测试代码: import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundExcep ...

  6. java socket 单服务器多客户端实时通信

    想用JAVA做一个服务器,请问怎么利用TCP和线程,实现多个客户端同时在线,能与服务器进行交互? 服务器监听端口 做个无限循环 接到一个连接就创建一个通道线程,并将通道线程存储到一个list集合中 1 ...

  7. Java中常见流的分类及简单讲解

    流在Java中是指计算中流动的缓冲区. 从外部设备流向中央处理器的数据流成为“输入流”,反之成为“输出流”. 字符流和字节流的主要区别: 1.字节流读取的时候,读到一个字节就返回一个字节:字符流使用了 ...

  8. [转]关于HTTP服务器每个客户端2个连接的限制

    这两天猫在家里搞一个多线程的断点续传得C#程序,发现同时只能开2个线程下载,其他的线程一律要等待,这样就导致下载大文件时其他线程经常超时,郁闷好久.今天回公司无意中发现了一个帖子,终于真相大白了, 现 ...

  9. 【转】关于HTTP服务器每个客户端2个连接的限制

    http://www.cnblogs.com/lishenglyx/archive/2010/01/07/1641190.html 这两天猫在家里搞一个多线程的断点续传得C#程序,发现同时只能开2个线 ...

随机推荐

  1. php中类的static变量使用

    <?php #访问静态变量 #类外部: 类名::$类变量名 #类内部: 娄名::$类变量名或self::$类变量名 class Char{ public static $number = 0; ...

  2. Caffe 学习笔记1

    Caffe 学习笔记1 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和 ...

  3. Linux I2C(一)之常用的几种实例化(i2c_client ) 【转】

    转自:http://blog.csdn.net/lugandong/article/details/48092397 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 前言 方式 ...

  4. Lodash使用示例(比较全)

    <html> <head> <meta name="viewport" content="width=device-width" ...

  5. vue知识点(1)

    处理用户输入 v-on指令添加一个事件监听器 div id="app-5"> <p>{{ message }}</p> <button v-on ...

  6. [ Python ] 基本数据类型及属性(上篇)

    1. 基本数据类型 (1) 数字 - int        (2) 字符串 - str        (3) 布尔值 - bool 2. int 类型中重要的方法 (1) int      将字符串转 ...

  7. java中的Map集合

    Map接口 Map为一个接口.实现Map接口的类都有一个特点:有键值对,将键映射到值的对象. Map不能包含重复的键,每个键可以映射到最多一个值. Map常见的接口方法有: V  put(K key, ...

  8. linux命令(1):sed命令

    实例一: Config_file文件内容如下: sed去除注释行:sed -i -c -e '/^#/d' config_file  [会删除指定文件带有注释行] sed去除空行: sed -i -c ...

  9. js字符串与Unicode编码互相转换

    ).toString() "597d" 这段代码的意思是,把字符'好'转化成Unicode编码,toString()就是把字符转化成16进制了 看看charCodeAt()是怎么个 ...

  10. 《java并发编程实战》读书笔记5--任务执行, Executor框架

    第6章 任务执行 6.1 在线程中执行任务 第一步要找出清晰的任务边界.大多数服务器应用程序都提供了一种自然的任务边界选择方式:以独立的请求为边界. -6.6.1 串行地执行任务 最简单的任务调度策略 ...