Java Socket通信代码片
package zhang;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
/**
* 服务器端的线程处理
* */
public class ServerThread extends Thread {
Socket socket=null; //和本线程相关的socket
/**
* 构造方法
* */
public ServerThread(Socket socket){
this.socket=socket;
}
/**
* 执行线程操作响应客户端的请求
* */
public void run(){
InputStream is=null;
InputStreamReader isr=null;
BufferedReader br=null;
OutputStream os=null;
OutputStreamWriter osw=null;
BufferedWriter bw=null;
//获取输入流,并读取客户端消息
try {
is=socket.getInputStream();
isr=new InputStreamReader(is);
br=new BufferedReader(isr);
String content;
while((content=br.readLine())!=null){
System.out.println(content);
}
socket.shutdownInput();
os=socket.getOutputStream();
osw=new OutputStreamWriter(os);
bw=new BufferedWriter(osw);
bw.write("欢迎您!");
bw.flush();
socket.shutdownOutput();
} catch (IOException e) {
e.printStackTrace();
}
//关闭资源
finally{
try {
if(br!=null)br.close();
if(isr!=null) isr.close();
if(is!=null) is.close();
if(os!=null) os.close();
if(osw!=null) osw.close();
if(bw!=null) bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package zhang;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import org.apache.log4j.Logger;
public class Server {
static Logger logger=Logger.getLogger("Server");
public static void main(String[] args) {
ServerSocket server=null;
try {
server=new ServerSocket(8887);
System.out.println(server.getInetAddress());
int count=0; //客户端连接的个数
System.out.println("服务器已启动,等待客户端的连接...");
Socket socket=null;
while(true){
socket=server.accept();
ServerThread serverthread=new ServerThread(socket);
serverthread.start();
count++;
System.out.println("客户端的数量为:"+count);
InetAddress address=socket.getInetAddress();
System.out.println(address);
}
} catch (IOException e) {
e.printStackTrace();
logger.debug("异常:"+e.getMessage());
}
finally{
if(server!=null){
try {
server.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
package zhang;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) {
try {
//创建连接服务器的套接字
Socket socket=new Socket("127.0.0.1",8887);
//向服务器发送信息
OutputStream os=socket.getOutputStream();
OutputStreamWriter osw=new OutputStreamWriter(os);
BufferedWriter bw=new BufferedWriter(osw);
bw.write("服务器你好,我是客户端...");
bw.flush();
//关闭输出流
socket.shutdownOutput();
InputStream is= socket.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String content;
while((content=br.readLine())!=null){
System.out.println("来自服务器的响应:"+content);
} //关闭资源
bw.close();
osw.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
先启动服务端:
服务端输出:
0.0.0.0/0.0.0.0
服务器已启动,等待客户端的连接...
再启动客户端:
客户端输出:
来自服务器的响应:欢迎您!
服务端输出:
0.0.0.0/0.0.0.0
服务器已启动,等待客户端的连接...
客户端的数量为:1
/127.0.0.1
服务器你好,我是客户端...
Java Socket通信代码片的更多相关文章
- Java Socket通信读取相关信息代码
转自:http://developer.51cto.com/art/201003/190206.htm Java Socket通信读取有不少需要我们注意的知识点.当我们在使用的时候有很多的问题摆在我们 ...
- java Socket通信使用BufferedReader和BufferedWriter的注意事项
注意事项:readLine()要求有换行标识,write()要输出换行标识,要调用flush()刷新缓冲区. 以下是取自java socket通信中的一小段代码. BufferedReader rea ...
- java socket通信-传输文件图片--传输图片
ClientTcpSend.java client发送类 package com.yjf.test; import java.io.DataOutputStream; import java.io ...
- Socket通信代码(原理)
1.运行环境:NetBeans IDE 6.0.1 2.说明:先运行服务器端,再运行客户端. 3.服务器端代码: 新建java类Test import java.net.*; import java. ...
- Java socket通信
首先抛开语言层面,简单介绍一下socket通信过程: 1.服务器端开启监听端口,阻塞进程 等待客户端连接 2.客户端连接,这时就产生了一个socket socket就相当于一个传递消息的通道,一般都 ...
- Java Socket通信以及可能出现的问题解决
Java中基于TCP协议实现网络通信的两个类:客户端的Socket和服务器端的ServerSocket. Socket通信模型如图所示: 不管Socket通信的功能有多复杂,任何socket通信过程的 ...
- Java Socket通信实现私聊、群聊
前言 闲言少叙,上代码! 代码编写 server服务端 /** * 服务端 */ public class Server { private static ServerSocket server = ...
- Java Socket 通信实例 - 转载
基于Tcp协议的简单Socket通信实例(JAVA) 好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些 ...
- Java Socket通信实例
一.简单的客户端与服务器一对一连接: Socket通信的步骤: 1.创建ServerSocket和Socket 2.打开连接到Scket的输入/输出流 3.按照协议对Socket进行读/写操作 4.关 ...
随机推荐
- 英语词汇(5)followed by / sung by / written by
Sung by 演唱者; [例句]In the recording I have today, it is sung by a male alto.我今天带的唱片是由一位男高音歌手唱的. follow ...
- python/匿名函数和内置函数
1 匿名函数 匿名函数是lambda定义的没有名字的具有一些小功能的函数 具体形式是 lambda 参数列表:返回值表达式 lambda x: X**2 # 求平方操作 lambda x: x> ...
- POJ-1679 The Unique MST---判断最小生成树是否唯一
题目链接: https://vjudge.net/problem/POJ-1679 题目大意: 给定一个无向连通网,判断最小生成树是否唯一. 思路: (1)对图中的每条边,扫描其他边,如果存在相同权值 ...
- terraform基本使用
安装terraform 下载terraform最新版本: wget https://releases.hashicorp.com/terraform/0.11.5/terraform_0.11.5_l ...
- 如何用Math.max.apply()获取数组最大/小值
最近似乎对JavaScript有点兴趣了~~~打算好好钻研这个东西.可是,一开始就遇到问题了!!! Math.min.apply(obj,args);//这个obj对象将代替Function类里thi ...
- Set<E> 接口简明
java. util. Set 接口 Set 接口中的方法和 Collection 中方法一致的.Set 接口取出方式只有一种, 迭代器 . HashSet : 底层数据结构是哈希表,线程 是不同步的 ...
- 线程的同步控制(Synchronization)
临界区(Critical Sections) 摘要 临界区(Critical Section) 用来实现"排他性占有".适合范围时单一进程的各线程之间. 特点 一个局部对象,不是一 ...
- Python进阶_mysql(1)
什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 进入mysql (linux ...
- [LeetCode] Exclusive Time of Functions 函数的独家时间
Given the running logs of n functions that are executed in a nonpreemptive single threaded CPU, find ...
- [LeetCode] Minimum Index Sum of Two Lists 两个表单的最小坐标和
Suppose Andy and Doris want to choose a restaurant for dinner, and they both have a list of favorite ...