1、socket编程实例1--Socket客户端(字符串)->请求到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;

/**
* Socket客户端
* @author wangbf
* @date 2015-10-30
*/
public class ClientStringSocket {

public static void main(String[] args) {
try {
// 创建socket对象,指明需要连接的服务器的地址和端口号
Socket socket = new Socket("localhost", 8888);
// 连接建立后,通过输出流向服务器端发送请求
OutputStream os = socket.getOutputStream();
// 将输出流封装成打印流
PrintWriter pw = new PrintWriter(os);
pw.write("用户名:王菲,密码:1245abc");
pw.flush();
socket.shutdownOutput();
// 获取服务端的输入流(字节流)
InputStream in = socket.getInputStream();
// 将字节流转为字符流
InputStreamReader isr = new InputStreamReader(in);
// 为字符输入流添加缓冲
BufferedReader br = new BufferedReader(isr);
String data = br.readLine();
while (data != null) {
System.out.println("get Server's data:" + data);
data = br.readLine();
}
socket.shutdownInput();
// 关闭相应资源
br.close();
isr.close();
in.close();
pw.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**
* Socket服务端
* @author wangbf
* @date 2015-10-30
*/
public class SerStringSocket {

public static void main(String[] args) {
try {
// 创建ServerSocket对象,绑定监听端口
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("***服务器即将启动,等待客户端的连接***");
// 通过accept()方法监听客户端请求
Socket socket = serverSocket.accept();
// 建立连接后,通过输入流读取客户端发送的请求信息(字节流)
InputStream is = socket.getInputStream();
// 将字节输入流转为字符输入流
InputStreamReader isr = new InputStreamReader(is);
// 为字符输入流添加缓冲
BufferedReader bufReader = new BufferedReader(isr);
String data = bufReader.readLine();
while (data != null) {
System.out.println("服务端获取客户端用户的信息->" + data);
data = bufReader.readLine();
}
socket.shutdownInput();
// 获取输出流
OutputStream os = socket.getOutputStream();
// 将输出流封装成打印流
PrintWriter pw = new PrintWriter(os);
pw.write("欢迎您,你已成功登陆!");
pw.flush();
socket.shutdownOutput();
// 关闭相关资源
pw.close();
os.close();
bufReader.close();
isr.close();
is.close();
is.close();
socket.close();
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

2、socket编程实例2--Socket客户端(对象)->请求到Socket服务端->响应客户端:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

/**
* Socket客户端
* @author wangbf
* @date 2015-10-30
*/
public class ClientObjectSocket {

public static void main(String[] args) {
try {
// 创建socket对象,指明需要连接的服务器的地址和端口号
Socket socket = new Socket("localhost", 8888);
// 连接建立后,通过输出流向服务器端发送请求
OutputStream os = socket.getOutputStream();
ObjectOutputStream obs = new ObjectOutputStream(os);
User user = new User();
user.setName("唐飞");
user.setPwd("123456");
obs.writeObject(user);
obs.flush();
socket.shutdownOutput();
// 获取服务端的输入流(字节流)
InputStream in = socket.getInputStream();
// 将字节流转为字符流
InputStreamReader isr = new InputStreamReader(in);
// 为字符输入流添加缓冲
BufferedReader br = new BufferedReader(isr);
String data = br.readLine();
while (data != null) {
System.out.println("get Server's data:" + data);
data = br.readLine();
}
socket.shutdownInput();
// 关闭相应资源
br.close();
isr.close();
in.close();
os.close();
obs.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**
* Socket服务端
* @author wangbf
* @date 2015-10-30
*/
public class SerObjectSocket {

public static void main(String[] args) {
try {
// 创建ServerSocket对象,绑定监听端口
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("***服务器即将启动,等待客户端的连接***");
// 通过accept()方法监听客户端请求
Socket socket = serverSocket.accept();
InputStream is = socket.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
User user = (User) ois.readObject();
socket.shutdownInput();
// 获取输出流
OutputStream os = socket.getOutputStream();
// 将输出流封装成打印流
PrintWriter pw = new PrintWriter(os);
pw.write("欢迎您《"+user.getName()+"》,你已成功登陆!");
pw.flush();
socket.shutdownOutput();
// 关闭相关资源
pw.close();
os.close();
ois.close();
is.close();
socket.close();
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

3、socket编程实例3--Socket客户端读取文本内容->Socket客户端(转化为输出流)->请求到Socket服务端->响应客户端:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;

/**
* Socket客户端
* @author wangbf
* @date 2015-10-30
*/
public class ClientFileSocket {

public static void main(String[] args) {
try {
// 读取D盘中的data.txt文本
File file = new File("D:\\data.txt");
// 把读取的data.txt文本内容,并转为字节流
InputStream inStream = new FileInputStream(file);
// 将字节流转为字符流
InputStreamReader iReader = new InputStreamReader(inStream,"utf-8");
// 为字符流添加缓冲
BufferedReader bReader = new BufferedReader(iReader);
// 一行一行读取文本内容
String fileDate = bReader.readLine();
StringBuffer buffer = new StringBuffer();
while(fileDate != null) {
buffer.append(fileDate);
System.out.println(fileDate);
fileDate = bReader.readLine();
}

// 创建socket对象,指明需要连接的服务器的地址和端口号
Socket socket = new Socket("localhost", 8888);
// 连接建立后,通过输出流向服务器端发送请求
OutputStream os = socket.getOutputStream();
PrintWriter pWriter = new PrintWriter(os);
pWriter.write(buffer.toString());
pWriter.flush();
socket.shutdownOutput();

// 获取服务端的输入流(字节流)
InputStream in = socket.getInputStream();
// 将字节流转为字符流
InputStreamReader isr = new InputStreamReader(in);
// 为字符输入流添加缓冲
BufferedReader br = new BufferedReader(isr);
String data = br.readLine();
while (data != null) {
System.out.println("get Server's data:" + data);
data = br.readLine();
}
socket.shutdownInput();
// 关闭相应资源
br.close();
isr.close();
in.close();
pWriter.close();
os.close();
socket.close();
bReader.close();
iReader.close();
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**
* Socket服务端
* @author wangbf
* @date 2015-10-30
*/
public class SerFileSocket {

public static void main(String[] args) {
try {
// 创建ServerSocket对象,绑定监听端口
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("***服务器即将启动,等待客户端的连接***");
// 通过accept()方法监听客户端请求
Socket socket = serverSocket.accept();
// 建立连接后,通过输入流读取客户端发送的请求信息(字节流)
InputStream is = socket.getInputStream();
// 将字节输入流转为字符输入流
InputStreamReader isr = new InputStreamReader(is);
// 为字符输入流添加缓冲
BufferedReader bufReader = new BufferedReader(isr);
String data = bufReader.readLine();
while (data != null) {
System.out.println("服务端获取客户端用户的信息->" + data);
data = bufReader.readLine();
}
socket.shutdownInput();
// 获取输出流
OutputStream os = socket.getOutputStream();
// 将输出流封装成打印流
PrintWriter pw = new PrintWriter(os);
pw.write("欢迎您,你已成功登陆!");
pw.flush();
socket.shutdownOutput();
// 关闭相关资源
pw.close();
os.close();
bufReader.close();
isr.close();
is.close();
is.close();
socket.close();
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

4、补充:通过流从指定位置读取文档内容,和把读取的文档写出到指定的文档中

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class FileStream {

public static void main(String[] args) {
try {
/**
* 把文本从D盘读出来
*/
File file = new File("D:\\data.txt");
// 获取文件的字节流
InputStream iStream = new FileInputStream(file);
// 把字节流转为字符输入流
InputStreamReader iReader = new InputStreamReader(iStream,"utf-8");
// 为字符输入流添加缓冲
BufferedReader bReader = new BufferedReader(iReader);
// 按行读取文本并输出
String data = bReader.readLine();
StringBuffer buffer = new StringBuffer();
while(data != null) {
System.out.println(data);
buffer.append(data);
data = bReader.readLine();
}

/**
* 把读出来的文档写入E盘中的data1.txt中
*/
// 读取字符流
FileReader fileReader = new FileReader(file);
// 为字符流添加缓冲
BufferedReader bufferedReader = new BufferedReader(fileReader);
// 创建一个向指定 File对象表示的文件中写入数据的文件输出流
FileOutputStream fStream = new FileOutputStream("E:\\data1.txt");
OutputStreamWriter oStreamWriter = new OutputStreamWriter(fStream,"UTF-8");
String str = bufferedReader.readLine();
while(str != null) {
oStreamWriter.write(str);
oStreamWriter.write("\n");
str = bufferedReader.readLine();
}
oStreamWriter.close();
fStream.close();
bufferedReader.close();
bReader.close();
iReader.close();
iStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

JAVA之Socket编程(技术总结)相关推荐

  1. TCP:利用Socket编程技术实现客户端向服务端上传一个图片。

    问题: 利用Socket编程技术实现客户端向服务端上传一个图片的程序. 客户端: import java.io.*; import java.net.Socket;public class clien ...

  2. api有哪些 javasocket_基于java的socket编程及API解析

    一.socket通讯过程 1.socket与socket编程简介: socket 被翻译为"套接字",它是计算机之间进行通信的一种约定或一种方式.通过 socket 这种约定,一台 ...

  3. 高级Socket编程技术

    高级Socket编程技术 实验目的 1.了解阻塞与非阻塞模式Socket编程的工作原理. 2.了解Socket编程的5种模型的工作原理和使用方法. 3.掌握Select模型和WSAAsyncSelec ...

  4. java运用网络编程技术代码_Java 网络编程

    java网络编程 1.什么叫计算机网络? 由不同地理位置的不同计算机主机,连接起来组成的网络. 2.什么叫网络编程? 在网络的基础上,使用网络进行编程,对应用层进行设计的活动. 3.网络编程三要素:I ...

  5. Java 网络 socket 编程

    使用套接字实现基于 TCP 协议的服务器和客户机程序 依据 TCP 协议,在 C/S 架构的通讯过程中,客户端和服务器的 Socket 动作如下: 客户端: 1.用服务器的 IP 地址和端口号实例化 ...

  6. Java的Socket编程

    socket编程一般指的就是网络编程,常见的服务端和客户机都是必不可少的,今天小千就来给大家介绍一下socket编程中常见的概念问题. 一.常见传输协议 1.tcp协议TCP (Transmissio ...

  7. java中socket编程实例_Java中socket编程的实现过程(代码实例)

    本篇文章给大家带来的内容是关于socket编程的实现过程,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.socket 服务器搭建 实例化socket服务器,循环获取请求packa ...

  8. Java基于socket编程实现局域网内简单通信

    运行客户端程序将创建一个客户端套接字,并与指定的服务器建立连接,接收了服务端发来的消息后关闭连接.服务端启动后会循环接收客户端连接,在接收到连接后,向该客户端发送 "Hello World! ...

  9. Java NIO Socket编程实例

    各I/O模型优缺点 BIO通信模型 BIO主要的问题在于每当有一个新的客户端请求接入时,服务端必须创建一个新的线程处理新接入的客户端链路,一个线程只能处理一个客户端连接 线程池I/O编程 假如所有可用 ...

最新文章

  1. mysql数据库对时间的函数吗_mysql 数据库 时间函数
  2. Ogitor的编译配置全过程
  3. LiveVideoStack主编观察回归 05/
  4. linux运维决心书!
  5. 如何用append连接html文件,jquery append()怎么用?
  6. 解决SpringBoot jar包太大的问题
  7. iOS 使用符号断点定位警告约束警告-[LayoutConstraints] Unable to simultaneously satisfy constrai...
  8. 建立网站需要什么条件_教育学校网站建设有什么作用?学校建立网站为的是什么?...
  9. 删除Word模板文件
  10. 成为excel高手必须掌握的54个函数
  11. LeetCode 热题 HOT 100 -------31. 下一个排列(数组,数学问题)128. 最长连续序列(数组) 11. 盛最多水的容器(数组) 621. 任务调度器 (数组)
  12. 光纤中的多种光学模式芯径_光纤的结构是什么?种类有哪些?该怎么选择?
  13. select 之分组查询
  14. Linux CentOS(常用命令)
  15. ORA-10456 ORA-01219
  16. 【FatFs】手动移植FatFs,将SRAM虚拟U盘
  17. MATLAB处理.nii格式文件(.nii转换为.jpg格式)
  18. Multisim基础 LC并联选频电路
  19. Java中的类和对象
  20. 干活的累死累活,数据分析师最后还要会写PPT的5条原则

热门文章

  1. 成员变量、类变量、局部变量的区别
  2. 基于mmcls的车辆属性识别
  3. 工业软件:一文讲透国内外MES/MOM市场格局,主流厂商及其优势行业
  4. 思科三层交换机vlan的划分
  5. android 执行shell root权限,Android App 获取root权限后,执行shell命令
  6. java ssm高校田径运动会成绩管理系统
  7. Android融云自定义表情
  8. 用matlab做空间计量模型,MATLAB 空间计量模型的实现
  9. atoi,itoi,atol,strtol, strtod函数转换
  10. Ubuntu 20.10安装Flashplay插件