使用 ServerSocket 建立聊天服务器-1
1.代码目录
2.ChatSocket.java
-----------------------------------------------------------------------------------------------------------------------------
package com.nantian.socket;
import java.io.IOException;
import java.net.Socket;
public class ChatSocket extends Thread{
//本地需要有一个socket对象,来接入传入的值
Socket socket;
/**
* 创建构造方法
*/
public ChatSocket(Socket s) {
this.socket=s;
}
/**
* 运行MyServerSocket类后,没有值输出后所写的方法
* @param out
*/
public void Out(String out) {
try {
socket.getOutputStream().write(out.getBytes("UTF-8"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 复写run方法,执行后台的功能
*/
@Override
public void run() {
/*
* //首先,对当前的socket实现数据的输出 //获取它的输出流 try { //BufferedWriter作为数据的输出,可以直接输出一行字符串了
* BufferedWriter bw= new BufferedWriter( new OutputStreamWriter(
* socket.getOutputStream())); //举例 int count=0; while (true) {
* bw.write("loop"+count); //每一秒执行一次 sleep(1000); } } catch (IOException e) { //
* TODO Auto-generated catch block e.printStackTrace(); } catch
* (InterruptedException e) { // TODO Auto-generated catch block
* e.printStackTrace(); }
*/
//上面这段代码太复杂了导致输不出内容
int count=0;
while (true) {
count++;
Out("loop+"+count);
//输出速度过快,每次输出后间隔500ms
try {
sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
3.MyServerSocket.java
-----------------------------------------------------------------------------------------------------------------------------------------
package com.nantian.socket;
//ctrl+shift+o删除多余的jar包
public class MyServerSocket {
public static void main(String[] args) {
new ServerListener().start();
}
}
4.ServerListener.java
----------------------------------------------------------------------------------------------------------------------------------------------
package com.nantian.socket;
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() {
try {
//port取值范围:1-65535(通常取值较大,这样可以和系统的分开)
ServerSocket serverSocket=new ServerSocket(12345);
//循环监听来自客户端的连接
while(true) {
//监听客户端的连接
//accept()为一个阻塞的方法,会阻塞当前的线程
//ServerSocket的accept()方法是侦听并接受到此套接字的连接,
//就是一直等待连接,此方法在连接传入之前一直阻塞。直到接受到有socket的连接。
//故创建ServerLIstener extends Thread
Socket socket=serverSocket.accept();
//建立连接
JOptionPane.showMessageDialog(null, "有客户端连接到了本机的12345端口");
//因为每一个Socket要与客户端独立的通信,所以socket需要另起一个线程
//将socket传递给新的线程,用于socket通信,故创建ChatSocket extends Thread
new ChatSocket(socket).start();//现在就可以循环监听客户端连接上的线程了
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
5.运行run as --> java application
运行截图:
------------------------------------------------------------------------------------------------------
cmd启动多个客户端,输入:telnet localhost 12345,截图如下:
==================================================================================================================================
以上代码只有对客户端发送数据的功能,并没有向客户端读取数据的功能.
使用 ServerSocket 建立聊天服务器-2,实现向客户端读取数据的功能
相关文章
- SQL Server跨服务器操作数据库
- 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的。) (.Net SqlClient Data Provider)
- Sql server在另一台服务器,在Visual Studio 中没问题,IIS中 提示“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。。。。”
- Linux 服务器上建立用户并分配权限
- 如何在 Ubuntu 环境下搭建邮件服务器(一)
- c#的http服务器和客户端实例
- SpringBoot整合云服务器下的FastDFS实现文件上传
- 《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》——1.5 Linux后门入侵检测工具
- 【服务器】CentOS 7.4安装JDK(JAVA环境)
- IBM整合Linux服务器能力 推动Linux关键业务发展
- 浅析 curl 命令用法及反向思维(服务器请求应用)的应用场景
- HPE公布2Q17财报 服务器收入大幅下滑
- Apache Solr采用Java开发、基于Lucene的全文搜索服务器
- 【ESP8266之LUA开发】十、MQTT建立客户端连接服务器,实现远程控制继电器
- 【ESP8266之AT开发】三、STA模式下ESP8266建立服务器,建立客户端(解决防火墙)
- 十年CDP,专业治疗服务器“脑裂”问题
- Linux下vsftp服务器原理、安装、配置实战
- Linux——编写一个简单的服务器、客户端(使用TCP)——服务器一直监听本机的xxxx号端口,如果收到连接请求,将接收请求并接收客户端发来的消息;客户端与服务器端建立连接并发送一条消息。
- 主流服务器虚拟化产品中的优势与短板概述
- 成为准DRAM的小幻想? Supermicro推出增内存的双槽服务器