java--socket实现一个client像还有一个client发送信息

首先建立接收方socket服务端

package com.haier.socket.server;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket;

import org.apache.log4j.Logger;

import com.haier.socket.PolicyServer;

public class TVServer implements Runnable {
	private Logger logger = Logger.getLogger(this.getClass().getName());

	private Socket client;

	public TVServer(Socket client) {
		this.client = client;
	}

	public void run() {
		logger.info("TV:client对象:" + client);
		try {
			BufferedReader in = new BufferedReader(new InputStreamReader(
					client.getInputStream()));
			String flag = "aa";
			logger.info("TV:flag :" + flag);

			// 获取TV端SOCKET连接,将数据传给TV端
			PolicyServer.tvSocketMap.put(flag, client);
		} catch (Exception e) {
			logger.info("error in the close the socket!");
			e.printStackTrace();
		} finally {

		}
	}
}

再创建发送socket服务端

package com.haier.socket.server;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

import org.apache.log4j.Logger;

import com.haier.bean.PolicyBean;
import com.haier.json.PolicyJson;
import com.haier.socket.PolicyServer;

public class WEBServer implements Runnable {
	private Logger logger = Logger.getLogger(this.getClass().getName()); 

	private Socket WebSocket;

	public WEBServer(Socket client) {
		this.WebSocket = client;
	}

	public void run() {
		logger.info("web:client对象:"+ WebSocket);
		Socket tvSocket = null;
		try {
			// web端
			BufferedReader webIn = new BufferedReader(new InputStreamReader(
					WebSocket.getInputStream()));

			while(true){
	 			String webStr = webIn.readLine();
	 			if("bye".equals(webStr)){
	 				break;
	 			}
				PrintWriter webOut = new PrintWriter(WebSocket.getOutputStream());
				webOut.println("收到信息...");
				webOut.flush();

//				PolicyBean policyBean = PolicyJson.getMacJson(webStr);
				String key = "aa";
				logger.info("key: " + key + ",web:" + webStr);

				// 获取TV端SOCKET连接,将数据传给TV端
				tvSocket = PolicyServer.tvSocketMap.get(key);
				PrintWriter tvOut = new PrintWriter(tvSocket.getOutputStream());
				tvOut.println(webStr);
				tvOut.flush();
			}

			tvSocket.close();
			WebSocket.close();
		} catch (Exception e) {
			logger.info("error in the close the socket!");
			e.printStackTrace();
		} finally {

		}
	}
}

创建两个測试客户端,一个接受、一个发送client

package com.test;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class ClientWEB {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {

		Socket client = new Socket("localhost", 9001);

		BufferedReader in = new BufferedReader(new InputStreamReader(
				client.getInputStream()));
		PrintWriter out = new PrintWriter(client.getOutputStream());

		BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
		while (true) {
			String str = wt.readLine();
			// String str = "jonathan";
			out.println(str);
			out.flush();
			System.out.println("client2:" + in.readLine());
		}
	}

}
package com.test;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class ClientTV {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{

		Socket client = new Socket("localhost", 9000);

		BufferedReader in = new BufferedReader(new InputStreamReader(
				client.getInputStream()));
		PrintWriter out = new PrintWriter(client.getOutputStream());

		while (true) {
			String str = in.readLine();
			System.out.println("client1:" + str);
			// String str = "jonathan";
		}
	}

}
时间: 2024-11-14 12:25:06

java--socket实现一个client像还有一个client发送信息的相关文章

函数TH_POPUP 功能: 向函数入口参数 client , user决定的用户发送信息(信息为入口参数 message 决 定的信息)

. 函数TH_POPUP      功能: 向函数入口参数 client , user决定的用户发送信息(信息为入口参数 message 决            定的信息)      事例﹕ZBC_LSL_017   http://www.uwins.cn/ ERP交流群379113944(验证:来自博客) 微信扫扫二维码加入我们的平台 七夕送女友送母亲---最佳的礼物

java socket之传输实体类对象

一.TCP编程     TCP协议是面向连接的.可靠地.有序的,以字节流的方式发送数据.java实现TCP通信依靠2个类:客户端的Socket类和服务器端的ServerSocket类. 基于TCP通信的Socket模型如下: Socket通信的实现步骤如下: 1.    创建服务器端Socket:ServerSocket和客户端Socket:Socket: 2.    打开连接到Socket的InputStream/OutputStream; 3.    按照协议对Socket进行读写操作: 4

Java socket详解

参考 https://www.jianshu.com/p/cde27461c226 刚给大家讲解Java socket通信后,好多童鞋私信我,有好多地方不理解,看不明白.特抽时间整理一下,详细讲述Java socket通信原理和实现案例.整个过程楼主都是通过先简单明了的示例让大家了解整个基本原理,后慢慢接近生产实用示例,先概况后脉络给大家梳理出来的,所有涉及示例都可以直接拷贝运行.楼主才疏学浅,如有部分原理错误请大家及时指正. 请尊重作者劳动成果,转载请标明原文链接:https://www.ji

java socket处理--修改输入、输出流

近期要做一个流媒体播放器,支持rtsp播放过程中,要记录客户端请求的信息(解析rtsp 请求信息,获取想要的参数).这时用到了对socket  输入.输出流拦截.处理的操作. 为了提高系统性能,引入的多线程操作,详见代码. 一.程序入口,启动多线程: import java.net.ServerSocket;import java.net.Socket; public class SocketProxy {    /**     * @param args     */    public st

Java Socket编程----通信是这样炼成的

Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术.下面就让我们一起揭开Socket的神秘面纱. Socket编程 一.网络基础知识(参考计算机网络)            关于计算机网络部分可以参考相关博客:           <TCP/IP协议栈及OSI参考模型详解> http://wangdy.blog.51cto.com/3845563/

Java]Socket和ServerSocket服务器端接受数据

java socket 与  ServerSocket 某次写一个智能设备上传数据,数据每次三秒一条,然后使用c++写的客户端,没有对应java的源码,只能自己手写了,期间各种问题现在总结下 首先用的框架是ssh(我想用那个应该是没什么差别),因为是添加到web项目中的,so我想到的是tomcat启动的时候启动,于是首先必须要有的是后台程序,否则tomcat无法启动成功:话不多说,上源码... web.xml中我最后选用的是listener  监听还有一种是servlet  应该都可以 我最后选

项目日志之基于Java socket的网络通讯

Java API网络类包中的Socket类是网络上运行的两个程序间双向通信的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递.我们打算通过Java中基于Socket的网络编程实现一个简单的网络通信程序.这就是我们团队项目(开发一款简单的通讯软件,其基本功能是实现一对一的网络信息通讯,并努力向一对多和多对多靠近)的主要内容. 一.Java socket通信开发原理(查阅资料): 服务器使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端

java socket 参数

Java socket参数选项: TCP_NODELAY:  表示立即发送数据 SO_RESUSEADDR:  表示是否允许重用socket所绑定的本地地址 SO_TIMEOUT :  表示接收数据时的等待超时时间 . 单位为毫秒,默认值为0 , 表示永远等待. SO_LINGER:  表示当执行 socket的close方法的时候,是否立即关闭底层的socket . 这个单位是秒. SO_SNFBUF:  发送数据的缓冲区大小 SO_RCVBUF:  接收数据的缓冲区大小 SO_KEEPLIV

使用Java Socket手撸一个http服务器

原文连接:使用Java Socket手撸一个http服务器 作为一个java后端,提供http服务可以说是基本技能之一了,但是你真的了解http协议么?你知道知道如何手撸一个http服务器么?tomcat的底层是怎么支持http服务的呢?大名鼎鼎的Servlet又是什么东西呢,该怎么使用呢? 在初学java时,socket编程是逃不掉的一章:虽然在实际业务项目中,使用这个的可能性基本为0,本篇博文将主要介绍如何使用socket来实现一个简单的http服务器功能,提供常见的get/post请求支持

Java Socket网络编程Client端详解

此类实现客户端套接字(也可以就叫“套接字”).套接字是两台机器之间的通信端点. Socket client = new Socket(ip,port);//创建一个流套接字并将其连接到指定 IP 地址的指定端口号. 以下为完整的客户端示例: SocketClientDemo.java public class SocketClientDemo { /** * 向指定的地址发送请求数据 * @param ipAddr * @param reqData */ public void sendReq(