socket实例1
第一个例子创建了一个java工程,用来测试Socket的连接功能,通过浏览器可访问,地址为:127.0.0.1:端口号
MyServerSocket.java,
package com.jikexueyuan.testmysetversocket.main;
public class MyServerSocket {
public static void main(String[] args) {
new ServerListener().start();
}
}
ServerListener.java
package com.jikexueyuan.testmysetversocket.main; import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; import javax.swing.JOptionPane; public class ServerListener extends Thread { @Override
public void run() {
//1-65535
try {
ServerSocket serverSocket = new ServerSocket();
while (true) {
//block
Socket socket = serverSocket.accept();
//建立连接
JOptionPane.showMessageDialog(null, "有客户端链接到了本机的12345端口");
//将socket传递给新的线程
ChatSocket cs = new ChatSocket(socket);
cs.start();
ChatManager.getChatManager().add(cs);
} } catch (IOException e) {
e.printStackTrace();
}
}
}
ChatSocket.java
package com.jikexueyuan.testmysetversocket.main; import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.Socket; public class ChatSocket extends Thread { Socket socket; public ChatSocket(Socket s){
this.socket = s;
} public void out(String out) {
try {
socket.getOutputStream().write((out+"\n").getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
System.out.println("断开了一个客户端链接");
ChatManager.getChatManager().remove(this);
e.printStackTrace();
}
} @Override
public void run() {
out("你已经连接到本服务器了");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(
socket.getInputStream(),"UTF-8"));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
ChatManager.getChatManager().publish(this, line);
}
br.close();
System.out.println("断开了一个客户端链接");
ChatManager.getChatManager().remove(this);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
System.out.println("断开了一个客户端链接");
ChatManager.getChatManager().remove(this);
e.printStackTrace();
} }
}
ChatManager.java
package com.jikexueyuan.testmysetversocket.main;
import java.util.Vector;
public class ChatManager {
private ChatManager(){}
private static final ChatManager cm = new ChatManager();
public static ChatManager getChatManager() {
return cm;
}
Vector<ChatSocket> vector = new Vector<ChatSocket>();
public void add(ChatSocket cs) {
vector.add(cs);
}
public void remove(ChatSocket cs) {
vector.remove(cs);
}
public void publish(ChatSocket cs,String out) {
for (int i = ; i < vector.size(); i++) {
ChatSocket csChatSocket = vector.get(i);
if (!cs.equals(csChatSocket)) {
csChatSocket.out(out);
}
}
}
}
打开浏览器后,访问地址得到:
socket实例1的更多相关文章
- 网络编程基础【day09】:简单socket实例(二)
本节内容 1.概述 2.socket实例 3.总结 一.概述 之前我们只是介绍了soket的概念和一些逻辑图表,下面我们来看看,socket的客户端和服务端到底是怎么用的? 二.socket实例 2. ...
- java tcp socket实例
java tcp socket实例 2011-04-20 13:58 2364人阅读 评论(1) 收藏 举报 socketjavatcpthreadserverclass package com.ne ...
- socket实例2
第二个实例创建一个java工程,基于tomcat服务器,程序运行时会启动客户端,实现了一个客户端向其他的客户端发送即时信息的功能 MainWindow.java package com.jikexue ...
- python socket实例练习
Web Server是基于Socket编程,又称之为网络编程,socket是网络编程接口,socket可以建立网络连接,读数据,写数据.socket模块定义了一些常量参数,用来指定socket的的地址 ...
- C # socket 实例
同步客户端存储示例 下面的示例程序创建连接到服务器的客户端. 客户端使用一个同步套接字生成,因此,客户端应用程序的执行挂起,直到服务器返回响应. 应用程序将字符串发送到服务器 ...
- py测试一个Socket实例
本实例旨在了解py和socket的一些相关知识. 1.服务器端搭建py监听程序. 在客户端搭建python,linux默认自带了python2.7,先不管安装了. 接着编写socket程序,可以在本地 ...
- python socket实例
1.客户端向服务端发送 #coding:utf-8 '''客户端''' import socket khd=socket.socket() #声明socket类型,同时生产socket连接对象 khd ...
- 简单的php socket 实例
server: <?php set_time_limit(0); $ip = '127.0.0.1'; $port = 8888; // 1. 创建 if( ($sock = socket_cr ...
- java Socket实例
可以实现客户端与服务端双向通信,支持多客户端连接,客户端断开连接,服务端不会出现异常 服务端代码: package com.thinkgem.jeesite.modules.socketTest.de ...
随机推荐
- vmware-tools(vmware workstation 10.0.4)安装的时候遇到的bug
有个GitHub,专门解决C++编译的时候出的问题 地址
- 使用linux操作系统的公司服务器有哪些品牌
服务器硬件是什么牌子的? 操心系统有哪些?cpu是哪些?
- 第一个androidAPP项目总结—ListView的上拉和下拉
1.下拉刷新 需继承implements SwipeRefreshLayout.OnRefreshListener @Overridepublic void onRefresh() { new Wea ...
- 微软分布式缓存 appfabric
appfabric为微软自家产的分布式缓存解决方案,随dotnet4.0一起发布.目前版本为1.1
- MySQL 表子查询
MySQL 表子查询 表子查询是指子查询返回的结果集是 N 行 N 列的一个表数据. MySQL 表子查询实例 下面是用于例子的两张原始数据表: article 表: aid title conten ...
- phpMyAdmim无法打开或空白页面问题解决
环境:windows环境 安装方式:appserv 安装完appserv之后,发现phpMyAdmin无法打开,具体表现为输入root用户名和密码之后长时间无法进入管理页面或进入之后一片空白.这种情况 ...
- 控件真的很好用,突然感觉自己以前研究Discuz!NT366源码的方式很2了
控件真的很好用,突然感觉自己以前研究Discuz!NT366源码的方式很2了,就是按钮上的或其他控件上的图片哪里去了?
- Delphi 串口打印机打印
一.硬件准备 打印机: 打印机必须具有串口,没有标配串口的打印机,必须购买串口卡,串口卡的型号请参考随机<操作手册>. 计算机: 计算机必须具有串口,计算机通常具有两个串口:COM1和CO ...
- zabbix log(logrt) key的使用
今天看了篇帖子是关于如何利用zabbix 自带的key去读log,监控linux异常登陆,一直以来都是自己写脚本去读log的.就想看看这个zabbix log 这个key怎么样..好吧开始: 官方文档 ...
- 转:初学者,手工注入测试方法小节 (出处:: 51Testing软件测试网--jie)
1.加入单引号 ’提交, 结果:如果出现错误提示,则该网站可能就存在注入漏洞. 2.数字型判断是否有注入; 语句:and 1=1 ;and 1=2 (经典).' and '1'=1(字符型) ...