【Java】简易Socket连接实现
客户端:
- import java.io.*;
- import java.net.Socket;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Scanner;
- /**
- * 客户端
- * */
- public class SocketClient {
- Socket socket;
- String address="127.0.0.1";
- int portNumber=4775;
- PrintWriter printWriter;
- BufferedReader bufferedReader;
- public SocketClient(){
- try {
- socket=new Socket(address,portNumber);
- bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
- printWriter=new PrintWriter(socket.getOutputStream());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public void chat(){
- System.out.println("请输入要发送的信息:");
- Scanner scanner=new Scanner(System.in);
- String str="";
- while(true){
- str=scanner.nextLine();
- printWriter.println(str);
- printWriter.flush();
- System.out.println(getCurTime()+"客户端:"+str);
- if(str.equals("bye")){
- break;
- }
- String server_str= null;
- try {
- server_str = bufferedReader.readLine();
- System.out.println(getCurTime()+"服务器:"+server_str);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- scanner.close();
- close();
- }
- public static String getCurTime(){
- Date date=new Date();
- SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- return simpleDateFormat.format(date);
- }
- public void close(){
- try {
- printWriter.close();
- bufferedReader.close();
- socket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- SocketClient socketClient=new SocketClient();
- socketClient.chat();
- }
- }
服务端:
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.ServerSocket;
- import java.net.Socket;
- /**
- * 服务器端
- * */
- public class SocketServer {
- private int server_port=4775;
- private ServerSocket serverSocket;
- PrintWriter printWriter;
- BufferedReader bufferedReader;
- Socket socket;
- public SocketServer(){
- try {
- serverSocket=new ServerSocket(server_port);
- System.out.println("服务器已启动!");
- socket=serverSocket.accept();
- System.out.println("有用户接入了!");
- printWriter=new PrintWriter(socket.getOutputStream());
- bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
- while (true){
- String str=bufferedReader.readLine();
- System.out.println("客户端:"+str);
- if(str.equals("bye")){
- break;
- }
- printWriter.println(str);
- printWriter.flush();
- System.out.println("发送数据给客户端~");
- }
- } catch (IOException e) {
- e.printStackTrace();
- }finally {
- try {
- printWriter.close();
- bufferedReader.close();
- socket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- public static void main(String[] args) {
- new SocketServer();
- }
- }
【Java】简易Socket连接实现的更多相关文章
- JAVA简易数据连接池Condition
用Condition和synchronized: import java.sql.Connection; import java.sql.DriverManager; import java.sql. ...
- java下tcp的socket连接案例
package cn.stat.p4.ipdemo; import java.io.BufferedReader; import java.io.IOException; import java.io ...
- java下tcp的socket连接
serverDemo package cn.stat.p4.ipdemo; import java.io.IOException; import java.io.InputStream; import ...
- java socket 判断Socket连接失效
要判断socket连接链路是否可用时,不能通过socket.isClosed() 和 socket.isConnected() 方法判断,要通过心跳包 socket.sendUrgentData(0x ...
- Java nio socket与as3 socket(粘包解码)连接的应用实例
对Java nio socket与as3 socket连接的简单应用 <ignore_js_op>Java nio socket与as3 socket连接的应用实例.rar (9.61 K ...
- Java与Scala的两种简易版连接池
Java版简易版连接池: import java.sql.Connection; import java.sql.DriverManager; import java.util.LinkedList; ...
- Dart Socket 与Java Socket连接
------------------------------------------------------------- Dart SocketClient----------------- ...
- JAVA ANDROID SOCKET通信检测(SERVER)连接是否断开
Pre 解决思路 代码后记: 客户端app上的部分代码 调用: 服务器上: 客户端判断服务器是否还活着代码: PRE 在利用socket写通讯程序的时候,想检测服务器是否还活着. 从网上找了很多资料, ...
- Java Socket 连接 Client端 和 Server端
Client端: import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;i ...
随机推荐
- 浅谈DFS,BFS,IDFS,A*等算法
搜索是编程的基础,是必须掌握的技能.--王主任 搜索分为盲目搜索和启发搜索 下面列举OI常用的盲目搜索: 1.dijkstra 2.SPFA 3.bfs 4.dfs 5.双向bfs 6.迭代加深搜索( ...
- 【编程的乐趣-用python解算法谜题系列】谜题一 保持一致
谜题一 保持一致 谜题 假设有一大群人排队等待观看棒球比赛.他们都是主场球迷,每个人都戴着队帽,但不是所有人都用同一种戴法,有些人正着戴,有些人反着戴. 假定你是保安,只有在全组球迷帽子戴法一致时才能 ...
- 使用npm发布、查看、引用、删除自己的包[小白推荐]
前言 怎么使用npm发布自己的组件包呢?博主看了不少相关的文章,都没有一个好的讲述.要么丢三落四,要么就是复杂到外行人根本看不懂,甚至无从下手.于是,在博主的潜心钻研下,终于成功了!所以,我打算写一 ...
- Linux磁盘管理及挂载
1.在vm workstations添加磁盘 添加完之后重启一下虚拟机 然后fdisk -l 可以看到虚拟机已经识别到了新的磁盘 2.添加磁盘分区 输入命令 fdisk /dev/sdb 命令(输入 ...
- 用Go语言在Linux下调用新中新DKQ-A16D读卡器,读二代证数据
1.背景 前几天用Python在Linux下成功的获取了二代证数据,最近正在学Go语言,这两天想着用Go语言也实现一下试看看. 2.开搞C++ 这次就比较简单了,直接把CppDemo里面的SynRea ...
- 文件(file 类)
题目: 编写一个应用程序,输入一个目录和一个文件类型,显示该目录下符合该类型的所有文件.之后,将这些文件中的某一个文件剪切到另外一个目录中. 代码: File_Demo /** * 包含两个类,一个主 ...
- Codeforces_492_E
http://codeforces.com/problemset/problem/492/E 题目规定了gcd=1,可以在纸上模拟一下,发现每一个起点,都会经历过n个点,n个点都是不同行不同列.可以把 ...
- HDU_1394_线段树
http://acm.hdu.edu.cn/showproblem.php?pid=1394 线段树入门题,每次读入一个数,就寻找在树中比它大的值的个数,然后更新树,把个数相加就是逆序数,每移动一个数 ...
- Codeforces_714_B
http://codeforces.com/problemset/problem/714/B 当不同大小整数有1.2个时,肯定成立,3个时,需要判断,大于等于4个,则肯定不成立. #include & ...
- 【原创】为什么Mongodb索引用B树,而Mysql用B+树?
引言 好久没写文章了,今天回来重操旧业.毕竟现在对后端开发的要求越来越高,大家要做好各种准备. 因此,大家有可能遇到如下问题 为什么Mysql中Innodb的索引结构采取B+树? 回答这个问题时,给自 ...