我使用的是VS2008 .Net 3.5中生成的传统C#Web服务客户端,继承自SoapHttpClientProtocol.这是连接到用Java编写的远程Web服务.
在客户端初始化期间,所有配置都在代码中完成,如下所示:
ServicePointManager.Expect100Continue = false;
ServicePointManager.DefaultConnectionLimit = 10;
var client = new APIService
{
EnableDecompression = true,
Url = _url + "?guid=" + Guid.NewGuid(),
Credentials = new NetworkCredential(user, password, null),
PreAuthenticate = true,
Timeout = 5000 // 5 sec
};
Run Code Online (Sandbox Code Playgroud)
一切正常,但执行最简单的方法调用所花费的时间几乎是网络ping时间的两倍.而Java测试客户端与网络ping时间大致相同:
C# client ~ 550ms
Java client ~ 340ms
Network ping ~ 300ms
Run Code Online (Sandbox Code Playgroud)
在分析会话的TCP流量后发现以下内容:
基本上,C#客户端按以下顺序发送TCP数据包.
Client Send HTTP Headers in one packet.
Client Waits For TCP ACK from server.
Client Sends HTTP Body in one packet.
Client Waits …Run Code Online (Sandbox Code Playgroud) 我已将我的Web服务转换为具有一些数据交换的wcf服务.作为最佳实践,提到并且可取的是DataContracts应该继承自IExtensibleDataObject.我明白,在添加或删除数据库的情况下,IExtensibleDataObject很有帮助.但我无法得到客户端如何访问删除的数据库.这是我的代码:
[ServiceContract(Namespace = "http://mycompany.com/2010/08/")]
public class MyWebService {
[OperationContract]
public Employee Add(Employee emp)
{
// Some Processing
}
}
[DataContract(Name = "Employee", Namespace = "http://mycompany.com/2010/08/")]
public class Employee : IExtensibleDataObject {
[DataMember] public string FirstName;
[DataMember] public string LastName;
public ExtensionDataObject ExtensionData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,在我的下一个Web服务版本中,我对DataContract进行了一些更改
[DataContract(Name = "Employee", Namespace = "http://mycompany.com/2010/09/")]
public class Employee : IExtensibleDataObject {
[DataMember] public string FirstName;
[DataMember] public string LastName;
[DataMember(IsRequired = true)] public string MiddleName;
public ExtensionDataObject ExtensionData { get; set; …Run Code Online (Sandbox Code Playgroud) 我想尝试开始使用Erlang,并且有一个数据源我想阅读它是通过Websockets分发的.现在我正在使用'websocket-client'模块在node.js中做同样的事情,但是有人可以为Erlang建议我可以查看的websocket客户端库吗?(或者,如果我不在考虑的话,可以选择另一种解决方案)
这是我第一次在java中编程网络.我正在寻找一种方式发送到某种方式广播到整个网络中的所有节点.让他们知道我的存在.我正在尝试制作一个多人网络游戏,我希望客户能够看到所有可用的游戏来选择加入哪个游戏.我想知道如何从服务器广播,以及如何让客户端听.
请简单,我是新手:)
提前致谢.
我在WIFI提供的同一局域网上有两个Android应用程序:
如何使(A)可以对(B)进行POST和GET请求?
(A)访问(B)的URL是什么样的?
谢谢大家.
我正在开发一个Android应用程序(客户端),并希望它使用TCP通信与我的Java服务器连接.
我已经完成了代码 - 简单的程序,客户端发送消息,服务器回复它 - 如下所示:
服务器代码:
import java.net.*;
public class Server {
public static void main(String[] args) {
int nreq = 1;
try
{
ServerSocket sock = new ServerSocket (8080);
for (;;)
{
Socket newsock = sock.accept();
System.out.println("Creating thread ...");
Thread t = new ThreadHandler(newsock,nreq);
t.start();
}
}
catch (Exception e)
{
System.out.println("IO error " + e);
}
System.out.println("End!");
}
}
Run Code Online (Sandbox Code Playgroud)
服务器的同一项目文件中的线程处理程序代码:
import java.io.*;
import java.net.*;
class ThreadHandler extends Thread {
Socket newsock;
int n;
ThreadHandler(Socket s, int v) …Run Code Online (Sandbox Code Playgroud) 这是我第一次玩api和oauth而tumblr有一个php客户端.我已经使用composer下载并安装了客户端.这是他们设置客户端的代码.
$client = new Tumblr\API\Client($consumerKey, $consumerSecret);
$client->setToken($token, $tokenSecret);
Run Code Online (Sandbox Code Playgroud)
我知道消费者密钥和秘密,但如何使用tumblrs php客户端获取令牌和令牌秘密?
我也知道oauth的过程,但我不知道如何实际实现它:/
我在Windows 2008 R2上安装了64位Oracle数据库服务器(11.2.0.3),当然,它会自动安装64位客户端.我必须在32位的服务器上安装一个应用程序,并且需要32位Oracle客户端.(不要问 - 我无法安装此应用程序的64位版本,它不能与64位客户端一起使用,我无法在另一台服务器上安装它.)
现在我尝试将32位客户端安装到不同的物理文件夹中,并在安装时为Oracle Base和Software Location选择了不同的值,并且安装得很好.它将32位客户端安装的BIN文件夹放在PATH statemtn的头部.
但是,当我尝试使用32位版本运行"SQLplus系统/系统"时,它给了我"ORA-12560:TNS:协议适配器错误".当我使用64位sqlplus.exe进入文件夹并运行它(直接而不是通过PATH)时,"系统/系统"凭据工作正常.
我将TNSNames文件夹从Oracle Server的NETWORK/admin文件夹复制到Oracle Client的NETWORK/admin文件夹,然后重新启动服务器.结果相同.
这是我对Oracle的故障排除知识的范围.
如何让32位客户端在与64位Oracle Server相同的服务器上运行?我知道在linux/Unix中,你只需将lib32文件夹放入64位客户端文件夹并设置几个环境变量,但我很确定它在Windows中并不那么简单.
如果有办法做到这一点,请回答您的描述,因为我需要逐步说明.
提前致谢.
我正在尝试使用Elasticsearch Java NodeBuilder Client连接到我的服务器.但是我没有看到任何指定我的服务器地址和端口的选项(就像我们可以在Transport Client中一样使用addNewTransportAddress("serveraddress", port)).如何让Node Client连接到我的服务器?代码如下,我在哪里提到要连接的服务器地址?
//On Startup
Node node = nodeBuilder()
.clusterName("elasticsearch")
.data(false) //No shards allocated; or can set client to true
.client(true) //No shards allocated; or can set data to false
.node();
//Node Client
Client client = node.client();
//Get API
GetResponse response = client.prepareGet("indexname", "type", "id")
.execute()
.actionGet();
System.out.println("----------------Index Output Begin----------------");
System.out.println("Index Name: " + response.getIndex());
System.out.println("Type: " + response.getType());
System.out.println("Document ID: " + response.getId());
System.out.println("Document Version: " + response.getVersion());
System.out.println("Source: " + response.getSourceAsString());
Run Code Online (Sandbox Code Playgroud) 在我的项目中,有私人聊天和消息通知等功能.消息通知让我们知道是否有任何新的未读消息.
为实现这一目标,我想到的想法是
就像在
client-server模型中一样,服务器应该监听新请求.就像那样,我认为应该有一些机制来监听服务器以获取有关新消息的信息.因为我知道ajax,所以我使用的ajax请求间隔为2秒.
但我后来认为,如果这是唯一的想法,StackOverflow应该使用相同的技巧,因为它们异步更新通知/投票信息.
在chrome中检查他们的ajax请求,它完全是空白的.
我需要知道如何在不使用频繁的ajax请求的情况下实现它(这将增加服务器上的负载).
使用最有效技术的简单示例对于学习非常有用.
client ×10
android ×2
c# ×2
java ×2
server ×2
32-bit ×1
ajax ×1
api ×1
broadcasting ×1
database ×1
erlang ×1
http ×1
httpclient ×1
httpserver ×1
jquery ×1
networking ×1
oauth ×1
oracle ×1
php ×1
sockets ×1
tcp ×1
tumblr ×1
versioning ×1
wcf ×1
web-services ×1
websocket ×1