线程实现ServerSocket和Socket实现数据交互
定义一个MyServer类
import java.io.IOException;
import java.net.ServerSocket;
public class MyServer {
public static void main(String[] args) {
try {
System.out.println("服务器启动");
ServerSocket ss = new ServerSocket(80);
while (true) {
new MyThread(ss.accept()).start();//监听到一次 开启一个线程,省去很多资源,这里很多人都会用死循环去实现循环监听,很浪费资源。
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
-----------------------------------
客户端访问服务器端的类
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class MyClient {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try {
System.out.println("客户端启动");
Socket socket = new Socket("127.0.0.1", 80);//访问本机,端口80
PrintWriter out = new PrintWriter(new OutputStreamWriter(
socket.getOutputStream()));//创建一个输出流,手动输入要转换的字符串
out.println(sc.next());
out.flush();
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));//创建一个输入流,接受服务器返回的数据
String sline = in.readLine();
System.out.println("从服务器端返回的数据是:" + sline);
} catch (IOException e) {
e.printStackTrace();
}
}
}
---------------------------------------------
线程类具体实现数据交互
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class MyThread extends Thread {
Socket socket;
public MyThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String sline = in.readLine();
System.out.println("从客户端接受的数据是:" + sline);
PrintWriter pw = new PrintWriter(new OutputStreamWriter(
socket.getOutputStream()));
pw.println((sline==null)?"":sline.toUpperCase());
pw.flush();
System.out.println("服务器结束");
} catch (IOException e) {
e.printStackTrace();
}
}
}
线程实现ServerSocket和Socket实现数据交互的更多相关文章
- 实现服务器和客户端数据交互,Java Socket有妙招
摘要:在Java SDK中,对于Socket原生提供了支持,它分为ServerSocket和Socket. 本文分享自华为云社区<Java Socket 如何实现服务器和客户端数据交互>, ...
- socket网络编程登录实现及多客户端和服务端的数据交互
一.TCP/IP 客户端 package com.demo.entity; import java.io.Serializable; public class UserInfo implements ...
- C# 移动端与PC端的数据交互
小记:针对目前功能越来越强大的智能手机来说,在PC端支持对手机中的用户数据作同步.备份以及恢复等保护措施的应用已经急需完善.不仅要对数据作保护,而且用户更希望自己的手机跟PC能够一体化,以及和远程服务 ...
- ServerSocket与Socket类
ServerSocket与Socket类 TCP套接字协议: TCP最主要的特征就是能够建立长时间的连接,而且能够保证数据安全的送达,但是速度比较慢.使用TCP进行连接的时候会有三次握手,之后才建立起 ...
- Python 进程间数据交互
进程间通信:进程之间必须需要中间件. 不同进程间内存是不共享的,要想实现两个进程间的数据交换 Queues:实现传输两个进程的数据 线程queue,访问数据只能在一个进程内进行线程与线程之间的 ...
- 基于Apache Thrift的公路涵洞数据交互实现原理
基于Apache Thrift的公路涵洞数据交互实现原理 Apache Thrift简介 Apache Thrift(以下简称为“Thrift”) 是 Facebook 实现的一种高效的.支持多种编程 ...
- Unity3D 使用Socket处理数据并将数据 在UGUI、NGUI上显示出来
Unity3d 不支持C#的线程直接调用Unity3D 主线程才能实现的功能.例如:给UGUI text 赋值.改变Color值等.怎样解决这个问题呢?使用一个Loom脚本. 按照惯例贴上代码. 首先 ...
- 详解 ServerSocket与Socket类
(请观看本人博文 -- <详解 网络编程>) 目录 ServerSocket与Socket ServerSocket 类: Socket类: ServerSocket与Socket 首先, ...
- TCP移动端跟服务器数据交互
同一台笔记本下的客户端和服务端 TCPClient 客户端: // RootViewController.h#import <UIKit/UIKit.h>#import "As ...
随机推荐
- UVA-818 dfs + 位运算
暴力枚举一些圆环,将这些圆环解开,看能否成为单链.判断单链的三个条件: 除了这些删除的圆环之外,其他圆环还连接着的圆环不能超过两个. 剩下的环没有连成圈. 剩下的圆环共分成m堆,每堆之间无连接,m必须 ...
- php面试上机题(2018-3-3)
需求:将第三方api的前3000条数据全部读取出来,存入对应的数据库字段 第三方api:http://pub.cloudmob.mobi/publisherapi/offers/?uid=92& ...
- Android开发Toast Notifications
Android开发Toast Notifications 关键类 Toast toast通知是一种在窗口表面弹出的消息.它只占用信息显示所需的空间,用户当前的activity仍保持可见并可交互.该通知 ...
- equals 与 == 区别及用法
==: 1. ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同: 2.如果要比较两个变量是否指向同一个对象,这时候就需要用==操作符进行比较: 注意:= ...
- 安装使用pyclone进行克隆演化推断
pyclone介绍 可以根据多个样品突变的allele frequency 和 copy number,推断出有该突变的细胞克隆所占的比例(cellular prevalence)在不同样品间的变 ...
- linux下直接拷贝新版本R
如果要使用新版本的R,除了直接安装,也可以直接拷贝R的文件夹.这样既可以保留原始的R版本和R包,也可以使用新版本的R和R包,R包存放在R目录下的library文件夹. 文件放路径 R: /usr/ ...
- P1141 01迷宫
https://www.luogu.org/problemnew/show/P1141 题目描述 有一个仅由数字0与1组成的n×n格迷宫.若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样 ...
- java创建自定义类的数组
今天在学图论的最小生成树,开始一直在想是用邻接矩阵还是关联矩阵来表示图,但是发现这样都会有好多空间浪费.于是我就自定义一个边的类,里面包含了权值,关联的端点1,端点2,和图的表示字母.发现我想创建11 ...
- VS2010 EXCEL2010 表格操作的编程实现
参考: http://blog.csdn.net/wxfy1977/article/details/3847450(另外一种实现方式,数据库方式) http://blog.csdn.net/evkj2 ...
- Dynamics 365中审核用户权限变化的一种方法
摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复268或者20180311可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ...