使用Socket模拟一个简单的Webservice调用
webservice是对socket的一个封装,让远程调用调用变得更加简单,那么使用socket究竟有多么麻烦呢?来看看。
做一个简单的天气查询:
服务端:
public class SocketServer {
public static void main(String[] args) {
DataInputStream dataInputStream = null;
DataOutputStream dataOutputStream = null;
try {
// 启动socket服务端
ServerSocket serverSocket = new ServerSocket(8888);
/**
* 加上while(true),让服务端一直保持运行,负责当有一个客户端连接成功以后,服务端就停止运行了。
*/
while (true) {
// 监听客户端连接,accept()方法是阻塞方法,如果没有客户端连接,其后的代码不会执行
Socket socket = serverSocket.accept();
dataInputStream = new DataInputStream(
socket.getInputStream());
dataOutputStream = new DataOutputStream(
socket.getOutputStream());
//获得客户端传来的城市名称
String cityName = dataInputStream.readUTF();
System.out.println("from client..." + cityName);
//查询天气并返回查询结果
String result = "晴天";
dataOutputStream.writeUTF(result);
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(dataOutputStream!=null)
dataOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if(dataInputStream!=null)
dataInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
客户端:
public class SocketClient {
public static void main(String[] args) {
Socket socket = null;
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;
try {
//创建Socket连接
socket = new Socket("127.0.01", 8888);
//得到输出流
dataOutputStream = new DataOutputStream(socket.getOutputStream());
//发送数据
dataOutputStream.writeUTF("海口");
//接收数据
dataInputStream = new DataInputStream(socket.getInputStream());
//得到输入流
String result = dataInputStream.readUTF();
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(socket!=null)
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if(dataInputStream!=null)
dataInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if(dataOutputStream!=null)
dataOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
使用socket都是用流来传输数据,要防止编码问题,要打开流,关闭流,而如果使用webservice则完全不必考虑这些。
使用Socket模拟一个简单的Webservice调用的更多相关文章
- 一个简单的webservice调用
我们先创建一个简单空web应用程序 然后添加新建项目 //我们创建一个peson对象,产生数据标识返回 using System; using System.Collections.Generic; ...
- 一个简单的webservice的demo(下)winform异步调用webservice
绕了一大圈,又开始接触winform的项目来了,虽然很小吧.写一个winform的异步调用webservice的demo,还是简单的. 一个简单的Webservice的demo,简单模拟服务 一个简单 ...
- 一个简单的Webservice的demo,简单模拟服务
前段时间一直在学习WCF,匆匆忙忙的把<WCF全面解析>和<WCF服务编程>看了一遍,好多东西都不是很懂,又听了一下WCF分布式开发的网络教程,算是马马虎虎的明白点了.回顾了一 ...
- 一个简单的Webservice的demo(中)_前端页面调用
首先新建项目,这里有两种调用方式,为了能方便理解,新建页面WebserviceTest如下图: 先引用写好的服务,这里用上次写好的服务.见上次写的一个简单的Webservice的demo,简单模拟服务 ...
- 一个简单的WebService实例
WebService在.NET平台下的作用是在不同应用程序间共享数据与数据交换. 要达到这样的目标,Web services要使用两种技术: XML(标准通用标记语言下的一个子集):XML是在web上 ...
- (转)Web Service入门简介(一个简单的WebService示例)
Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...
- Web Service入门简介(一个简单的WebService示例)
Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...
- 利用VS2008发布一个简单的webservice
一个开发好的webservice,怎样发布出去,供其他电脑访问呢? 本文将介绍如何发布一个简单的webservice,其中的内容都是在网上查看别人文章,自己仿照着做了一遍,因此,难免会发生错误,如果发 ...
- Socket——实现一个简单的静态网页服务器
整体结构就是使用ServerSocket监听一个地址,当有接受到请求之后,解析请求中的资源路径.服务器资源路径存放在项目下的一个目录中,服务器会到这个目录中根据请求的路径去寻找相应的资源.如果找到了则 ...
随机推荐
- NGINX+UWSGI部署生产的DJANGO代码
并且NGINX不用ROOT帐户哟. 1,编译安装NGINX及UWSGI及DJANGO,不表述 2,将NGINX文件夹更改为普通用户拥有.但执行文件NGINX仍为ROOT,运行如下命令加入特殊权限标志位 ...
- Android 联系人信息的读取注意判断是否为NULL Android联系人的删除实质
在Android系统联系人界面删除一条短信实际上并不是真正的删除,而是在数据库中标记raw_contacts表中Contact_id为null以及data表中raw_contact_id为空,这是为了 ...
- 【Uvalive 5834】 Genghis Khan the Conqueror (生成树,最优替代边)
[题意] 一个N个点的无向图,先生成一棵最小生成树,然后给你Q次询问,每次询问都是x,y,z的形式, 表示的意思是在原图中将x,y之间的边增大(一定是变大的)到z时,此时最小生成数的值是多少.最后求Q ...
- 通过live555实现H264 RTSP直播
http://blog.csdn.net/firehood_/article/details/16844397
- 安装Chive提示CDbConnection failed to open the DB connection.
最近初学PHP,看到Chive这个好玩的数据库管理工具,在登录时遇到这样的错误提示信息: CDbConnection failed to open the DB connection. 我的PHP版本 ...
- Cocos2d—X游戏开发之CCScrollView(滑动视图)(十二)
CCScrollView在Cocos2d-X引擎中主要使用在图片尺寸远大于屏幕尺寸的时候使用. 总体来说,使用起来比较简单. 一个是CCScrollView控件本身,一个是CCScrollViewDe ...
- 【HDOJ】1160 FatMouse's Speed
DP. #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXNUM 1005 ...
- 求奇数偶数的和,,利用while循环
static void Main(string[] args) { while (true) { try ...
- 微软开放技术发布开源 Jenkins 插件以将 Windows Azure Blob 服务用的开作存储库
发布于 2014-02-10 作者 陈 忠岳 持续集成 (CI) 的历史源远流长, 其宗旨在于软件团队在敏捷环境中不断将他们的工作整合为持续构建.管理 CI 进程的工具已存在一段时间.过去几年中 ...
- 初级程序员应该了解的Linux命令
基于Linux的系统最美妙的一点,就是你可以在终端中使用命令行来管理整个系统.使用命令行的优势在于,你可以使用相同的知识和技能来管理随便哪个Linux发行版. 对于各个发行版以及桌面环境(DE)而言, ...