symbian rsocket 的一个例子
来源:互联网 发布:wd移动硬盘格式化mac 编辑:程序博客网 时间:2024/05/29 16:38
现在网上已经有一些关于本例所用到的API的详细说明,所以在此就不加详细说明,本文会注重讲解用API时的一些注意事项,本例以symbian手机为客户端,以PC为服务端,服务端使用JAVA写的。
客户端代码如下:
RSocketServ ser;
RHostResolver Host;
RSocket socket;
TUint NumPro;
TSockAddr Addr;
TProtocolDesc ProInfo;
TRequestStatus Status;
TNameEntry Info;
User::LeaveIfError(ser.Connect());
User::LeaveIfError(ser.NumProtocols(NumPro));
TBuf8<KSocketDefaultBufferSize> test;
TSockXfrLength iLen = KSocketDefaultBufferSize;
Host.Open(ser, KAfInet, KProtocolInetTcp);
User::LeaveIfError(Host.GetByName(_L("jinxuxin-PC"), Info));
User::LeaveIfError(socket.Open(ser, KAfInet, KSockStream, KProtocolInetTcp));
Addr = Info().iAddr;
Addr.SetPort(20001);
socket.Connect(Addr, Status);
User::WaitForRequest(Status);
console->Printf(_L("connected...."));
socket.RecvOneOrMore(test, 0, Status, iLen);
User::WaitForRequest(Status);
console->(CnvUtfConverter::ConvertToUnicodeFromUtf8L(test)->Des());
RHostResolver Host:定义名字解析,因为我在帮助文档里没找到直接设置IP的方法(如果那位大侠知道如何直接设置IP的方法,希望不吝赐教),就只能用名字来取得IP地址,获得TSockAddr 对象:首先通过GenByName可以获得TNameEntry 对象(如果给入的主机名不存在的话,会出现system error -1的错误)通过Info().iAddr(TNameEntry 重载了括号操作符,返回一个TSockAddr 对象)可获得TSockAddr 对象。再调用Addr.SetPort(20001)设置端口。
两个User::WaitForRequest(Status)的作用:等待操作成功。
TSockXfrLength iLen = KSocketDefaultBufferSize:TSockXfrLength 重载了=号操作符,可以用一个整数去初始化TSockXfrLength 对象。
console->(CnvUtfConverter::ConvertToUnicodeFromUtf8L(test)->Des()):网络上传输的数据都是以UTF-8进行编码的,为了中文现实不会出现乱码,将UTF-8转换为Unicode以后进行打印。
服务器端代码:
private static final int BUFSIZE = 32; // Size of receive buffer
public static void main(String[] args) throws IOException {
int servPort = 20001;
ServerSocket servSock = new ServerSocket(servPort);
int recvMsgSize; // Size of received message
byte[] receiveBuf = new byte[BUFSIZE]; // Receive buffer
while (true) { // Run forever, accepting and servicing connections
Socket clntSock = servSock.accept(); // Get client connection
SocketAddress clientAddress = clntSock.getRemoteSocketAddress();
System.out.println("Handling client at " + clientAddress);
InputStream in = clntSock.getInputStream();
OutputStream out = clntSock.getOutputStream();
out.write(new String("Hello").getBytes());
clntSock.close();
}
本服务器接收到连接后在控制台打印出客户端的IP地址,然后传回一个Hello字符串,检测连接是否通畅。
- symbian rsocket 的一个例子
- Symbian选择接入点对话框的问题 RSocket ECommDbDialogPrefDoNotPrompt
- Symbian 活动对象和RSocket
- [转]symbian rsocket api 使用方法
- symbian 2nd支持cmnet和cmwap的断点续传的RSocket实现
- symbian 2nd支持cmnet和cmwap的断点续传的RSocket实现
- Symbian(RSocket DownLoad)模拟HTTP下载
- Symbian(RSocket DownLoad)模拟HTTP下载
- Symbian 显示位图的例子
- Symbian 显示 svg 图的例子
- symbian逆向的一个BLOG
- Symbian 的一个应用的启动过程
- Symbian 的一个应用的启动过程
- Symbian 的一个应用的启动过程
- 一个简单的Symbian OS异步计时器
- Symbian添加一个控件的基本步骤
- 一个简单的Symbian OS异步计时器
- Symbian添加一个控件的基本步骤
- SQL Server 实例每个数据库的数据表个数受数据库中的对象个数限制
- session使用方法
- 常用的JavaScript语句集
- Ubuntu 10.04修改默认启动系统
- oracle archive log list 切换为 noarchivelog
- symbian rsocket 的一个例子
- Qt资源
- 顺序表实现(SeqList C++)
- zoj 1111 Poker Hands
- java截取带html标签的字符串,再把标签补全(保证页面显示效果)
- AJAX分段下载/读取HTML内容(有效节省带宽加快运行速度)
- jquery 刷新页面方法和一些javascript基础函数
- 模块文件生成html
- POJ 1740 A New Stone Game