Socket实现简单聊天
服务端:
package main.java.com.socket_dome; import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner; public class LoginServer { public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ServerSocket serverSocket = null;
Socket socket = null; try {
//输入提示语,代表服务端成功启动
System.out.println("启动成功!");
//建立客户端,并连接8080端口号
serverSocket = new ServerSocket(8080);
//监听客户端
socket = serverSocket.accept();
//打开socket的I/O流
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
//循环,让服务端一直处于监听状态
while(true){
//接收来自客户端的信息,并且打印在控制台
int len = 0;
byte[] b = new byte[1024];
len = is.read(b);
System.out.println("客户端说:"+ new String(b,0,len));
System.out.println("服务端输入:");
//把回复的内容打散成字节数组发送给客户端
String reply = input.next();
os.write(reply.getBytes());
} } catch (IOException e) {
e.printStackTrace();
}finally {
try {
//关闭socked,切记不可以关闭i/o流
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
} }
}
客户端:
package main.java.com.socket_dome; import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.SQLOutput;
import java.util.Scanner; public class Clinet { public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Socket socket = null;
OutputStream os = null;
InputStream is = null; try {
//建立客户端,本机连接测试
socket = new Socket("localhost",8080);
//打开输出流
os = socket.getOutputStream();
is = socket.getInputStream();
//不断的来回交互,因此写个死循环
while (true){
//发送信息给客户
System.out.println("客户端输入:");
os.write(input.next().getBytes());
//接收读取的信息
int len = 0 ;
byte[] b = new byte[1024];
len = is.read(b);
System.out.println("服务器说:"+ new String(b,0,len)); }
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
//关闭socket
if (socket != null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
} }
效果:


Socket实现简单聊天的更多相关文章
- C#基于Socket的简单聊天室实践
序:实现一个基于Socket的简易的聊天室,实现的思路如下: 程序的结构:多个客户端+一个服务端,客户端都是向服务端发送消息,然后服务端转发给所有的客户端,这样形成一个简单的聊天室功能. 实现的细节: ...
- 关于Socket编写简单聊天工具的总结(原创)
这段时间再看socket编程,虽然现在是刚刚接触,但是还是忍不住想写一篇总结,来激励自己努力学习,写的不好的地方,还请大家指教啊! 下面针对一个简单的发送消息和文件的程序说说吧. 首先是服务器需要 ...
- WPF使用socket实现简单聊天软件
公司网络限制不能传文件,先贴部分代码 控件添加到界面就行,界面随意布局 项目结构: 1.解决方案 1.1. Client 1.2. Server Client: <Window x:Class= ...
- Socket实现简单的聊天通信
最近学习了Socket后,感觉Socket挺好玩的,在博客中看到socket在实时聊天功能的很强大,于是乎就做了一个简单的聊天功能,今天贴出来,能够与大家一起共享,有不对之处,能够给予指出,谢谢! 服 ...
- Python Socket 简单聊天室2
上篇文章写了一个简单的单线程的一问一答的简单聊天室.这次我们使用SocketServer模块搭建一个多线程异步的聊天室. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- java Socket实现简单在线聊天(二)
接<java Socket实现简单在线聊天(一)>,在单客户端连接的基础上,这里第二步需要实现多客户端的连接,也就需要使用到线程.每当有一个新的客户端连接上来,服务端便需要新启动一个线程进 ...
- java Socket实现简单在线聊天(一)
最近的项目有一个在线网页交流的需求,由于很久以前做过的demo已经忘记的差不多了,因此便重新学习一下. 我计划的大致实现步骤分这样几大步: 1.使用awt组件和socket实现简单的单客户端向服务端持 ...
- 利用socket.io+nodejs打造简单聊天室
代码地址如下:http://www.demodashi.com/demo/11579.html 界面展示: 首先展示demo的结果界面,只是简单消息的发送和接收,包括发送文字和发送图片. ws说明: ...
- 一对一Socket简单聊天的实现
今天终于调试通了Socket一对一的聊天,每次发送连接请求后,将用户名发送到Socket中去,然后将用户名和新建的socket存到map中,然后根据用户名来确定接收方是谁,以实现一对一的聊天功能. 上 ...
随机推荐
- Pytest(18)pytest接口自动化完整框架思维导图
pytest接口自动化完整框架思维导图
- Codeforces Round #646 (Div. 2) C. Game On Leaves(树上博弈)
题目链接:https://codeforces.com/contest/1363/problem/C 题意 有一棵 $n$ 个结点的树,每次只能取叶子结点,判断谁能最先取到结点 $x$ . 题解 除非 ...
- C - Last Digit
Description The function f(n, k) is defined by f(n, k) = 1k + 2k + 3k +...+ nk. If you know the valu ...
- hdu 6795 Little W and Contest 并查集+排列组合
题意: t组输入,有n个人,刚开始谁也不认识谁.每一个人有一个权值w[i](1<=w[i]<=2),你要挑选3个互相不认识的人组成一个队,且要保证3个人权值之和大于等于5(也就意味着最少要 ...
- xml——dom&sax解析、DTD&schema约束
dom解析实例: 优点:增删改查一些元素等东西方便 缺点:内存消耗太大,如果文档太大,可能会导致内存溢出 sax解析: 优点:内存压力小 缺点:增删改比较复杂 当我们运行的java程序需要的内存比较大 ...
- Link/Cut Tree CodeForces - 614A 暴力+爆 long long 处理
题意: 给你一个区间[l,r],让你从小到大输出k^x,设y=k^x,要保证y在区间[l,r]中 题解: 就算k是最小的2也不需要枚举多少次就到long long的极限了,所以暴力没商量,根本不会TL ...
- Cell 动态行高文字显示不全问题探索
目录 问题概述 一.新建工程 二.尝试复现问题 尝试解决 修改contentLblBtmCon优先级为High(750) 修改contentLblBtmCon优先级为Low(250) 小结 其他解决思 ...
- VS Code 搭建合适的 markdown 文档编写环境
写在开头,之前我是使用Gitee与Github作为图床和Picgo搭配Typora使用的 ,但因为最近觉得这样还是稍微比较繁琐,然后因为VS Code是我的主要文本编辑器.Cpp,Python等均是在 ...
- LINUX - pthread_mutex_lock
原文链接:https://www.cnblogs.com/fengbohello/p/7571722.html 互斥的概念 在多线程编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性. 每个对 ...
- win10安装CUDA CUDNN tensorflow-gpu 1.14
#1 安装anaconda 官网下载安装即可.python3.7版本 #2 安装CUDA CUDNN tensorflowgpu1.14 对应CUDNN 7.6.1 CUDA 10.0 注意ten ...