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中,然后根据用户名来确定接收方是谁,以实现一对一的聊天功能. 上 ...
随机推荐
- 【STM32】串口
一. 串口中断使能问题 错误: 串口只能接收一次数据,从串口助手发第二个数据时接收不到. 分析: 在UART_Receive_IT(huart)函数里,回调函数的上面有如下代码: 这几行代码的作用是关 ...
- Codeforces Round #604 (Div. 2) A. Beautiful String(贪心)
题目链接:https://codeforces.com/contest/1265/problem/A 题意 给出一个由 a, b, c, ? 组成的字符串,将 ? 替换为 a, b, c 中的一个字母 ...
- HDU 3032 Nim or not Nim?(SG打表找规律)
题意: 给你n堆石子,你每次只能操作一堆石子 1.拿去任意个,最少1个 2.把这一堆分成两堆,没有要求对半分 解析+代码: 1 //解题思路: 2 //对于一个给定的有向无环图,定义关于图的每个顶点的 ...
- 牛客小白月赛17 G 区间求和
传送门 题意: 题解: 原本想着使用暴力方法: 1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream& ...
- Beautiful numbers CodeForces - 55D
题意: 找出区间[li,ri]内有多少数满足,这个数的每一个位的非0数都能把这个数整除 题解: 因为这个数每一位的值都可以把这个数整除,那也就是说这个数是它所有位数的公倍数,但是可能不是最小公倍数. ...
- 过滤器,拦截器,aop区别与使用场景
1. 什么是过滤器 过滤器,顾名思义就是起到过滤筛选作用的一种事物,只不过相较于现实生活中的过滤器,这里的过滤器过滤的对象是客户端访问的web资源,也可以理解为一种预处理手段,对资源进行拦截后,将其中 ...
- forEachRemaining()方法的用法
forEachRemaining()是java1.8新增的Iterator接口中的默认方法对于这个方法,官方文档是这么描述的:Performs the given action for each re ...
- httprunner(11)运行测试报告
前言 受益于pytest的集成,HttpRunner v3.x可以使用pytest所有插件,包括pytest-html和allure-pytest,也可以实现这2种方式的报告 内置html报告 pyt ...
- Linux系统启动过程内核文件丢失解决方法
一.问题描述 公司近期因机房断电,导致服务器重启后,引导进入不了操作系统.经过检查发现启动文件缺失,导致系统启动失败,网上搜了好多资料,解决都比较零散,现结合实际处理经验和网友的建议整理接方案. 二. ...
- Ant-design-vue—— 表单输入框输入很卡问题
参考:https://blog.csdn.net/weixin_43905402/article/details/106074435 我的问题:vue项目中使用ant-design-vue,表单中输入 ...