Socket 一对多通信
服务器(TCPServer.java):
package visec;
import java.net.*;
import java.io.*; public class TCPServer{
public static void main(String[] args) throws Exception{
ServerSocket ss = new ServerSocket(5566); //创建一个Socket服务器,监听1001端口
System.out.println("1001端口开启~~");
int i=0;
//利用死循环不停的监听端口
while(true){
Socket s = ss.accept();//利用Socket服务器的accept()方法获取客户端Socket对象。
i++;
System.out.println("第" + i +"个客户端成功连接!");
Client c = new Client(i,s); //创建客户端处理线程对象
Thread t =new Thread(c); //创建客户端处理线程
t.start(); //启动线程
}
}
}
//客户端处理线程类(实现Runnable接口)
class Client implements Runnable{
int clientIndex = 0; //保存客户端id
Socket s = null; //保存客户端Socket对象 Client(int i,Socket s){
clientIndex = i;
this.s = s;
}
public void run(){
//打印出客户端数据
try{
DataInputStream dis = new DataInputStream(s.getInputStream());
System.out.println("第" + clientIndex + "个客户端发出消息:" + dis.readUTF());
dis.close();
s.close();
}
catch(Exception e)
{}
}
}
客户端(TCPClient.java):
package visec;
import java.net.*;
import java.io.*; public class TCPClient{
public static void main(String[] args) throws Exception{
Socket s = new Socket("192.168.0.129",5566); //创建一个Socket对象,连接IP地址为192.168.0.129的服务器的5566端口
DataOutputStream dos = new DataOutputStream(s.getOutputStream()); //获取Socket对象的输出流,并且在外边包一层DataOutputStream管道,方便输出数据
Thread.sleep((int)(Math.random()*200)); //让客户端不定时向服务器发送消息
dos.writeUTF("客户端消息--Msg"); //DataOutputStream对象的writeUTF()方法可以输出数据,并且支持中文
dos.flush(); //确保所有数据都已经输出
dos.close(); //关闭输出流
s.close(); //关闭Socket连接
}
}
Socket 一对多通信的更多相关文章
- 使用TCP/IP的套接字(Socket)进行通信
http://www.cnblogs.com/mengdd/archive/2013/03/10/2952616.html 使用TCP/IP的套接字(Socket)进行通信 套接字Socket的引入 ...
- java socket实现全双工通信
java socket实现全双工通信 单工.半双工和全双工的定义 如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工. 如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方 ...
- Java 网络编程(五) 使用TCP/IP的套接字(Socket)进行通信
链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/10/2952616.html 使用TCP/IP的套接字(Socket)进行通信 套接字Socke ...
- linux c使用socket进行http 通信,并接收任意大小的http响应(四)
终于说到SOCKET 这里了.SOCKET进行http通信的实际就是利用socket将http请求信息发送给http服务器,然后再利用socket接收http响应. 由于本文与之通信的服务器是ip已知 ...
- linux c使用socket进行http 通信,并接收任意大小的http响应(三)
使用socket进行http通信的时候,浏览器返回的响应经常不是固定长度的,有时候很大,有些时候又非常小,十分讨厌.如果仅仅只是为了接收一小段信息,设置一个十分大的缓存,这样又会十分浪费.而且经常更改 ...
- socket上http协议应用(使用socket进行http通信的例子,准备好报头以后,简单read/write就可以了)
前几天看socket本有点晕, 好不容易弄明白了,才发现公司服务器用的是http的. 找了好久也没发现linux下直接用http的api, 不过今日偶然发现了使用socket进行http通信的例子, ...
- Flex Socket与Java通信实例说明(转)
Flex Socket与Java通信实例说明(转) 这两天一直在flex的Socket ,现在终于懂了很多.由浅到深一步一步深入.慢慢体会实例,虽然实例都是在网上找的,但也经过了我的测试.我比较喜欢注 ...
- Python网络编程02 /基于TCP、UDP协议的socket简单的通信、字符串转bytes类型
Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes类型 目录 Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes ...
- 网络编程: 基于TCP协议的socket, 实现一对一, 一对多通信
TCP协议 面向连接 可靠的 面向字节流形式的 tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 TCP协议编码流程: 服务器端: 客户端 实例化对 ...
随机推荐
- CSS文件中第一行@charset "utf-8";的作用
使用UTF-8编码唯一的好处是,国外的用户如果使用Windows XP英文版,浏览UTF-8编码的任何网页,无论是中文.还是日文.韩文.阿拉伯文,都可以正常显示,UTF-8是世界通用的语言编码,而如果 ...
- PeopleSoft Object Types Definitions
PeopleSoft stores object definitions types such as Record, Field and SQL definitions as numbers in ...
- C#winform在textbox插入内容换行
要让一个TextBox显示多行文本就得把它的Multiline属性设置为true,可是如果你是要把TextBox的Text属性设置多行文本时可能会遇到点麻烦,也许你会想到直接加一个换行符"\ ...
- silverlight 退出当前页面、跳转到主页面
1.退出当前页面 private void imgExit_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { if (Message ...
- linux中PHP dirname(__FILE__)路径问题解决
近期在给wordpress开发模板功能时发现,直接使用include(“文件名”)的形式调用其他php代码片段时会出现路径错误.之前服务器环境一直都是iis,未曾出现过类似的BUG,但换成linux服 ...
- 【Zend Studio】10.6.0版本设置默认编码为UTF-8
1.打开Windows->Prefefences 2.找到Workspace->Text file encoding,修改为UTF-8,OK保存.
- Ubuntu 14.04 安装flash插件
分别tar.gz和apt-get方法 第一种: adboe官网下载tar.gz,进入terminal 1.解压缩包,输入命令“tar -zxvf 软件包名字” 2.拷贝插件到mozilla目录,输入命 ...
- jquery 消息提醒插件 toastmessage
最近做系统,想到使用后台要使用消息提醒,但是一直苦恼消息提醒的效果,于是找了一个toastmessage,还不错.记录下使用的方法. 第一步:引入需要的文件 <script type=" ...
- MySQL远程访问授权
开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 330 ...
- Eclipse 4.6 Neon, could not create the java virtual machine
下了eclipse 4.6,打开报错:could not create the java virtual machine. a fatal exception has occurred. 命令行用 e ...