`

Symbian中同步socket用法

阅读更多

 

//下边的代码是介绍同步socket的用法:

//需要用到的lib,可能不全,请看sdk的help自己添加

esock.lib

//需要的头文件,可能不全,请看sdk的help自己添加

#include <in_sock.h>

#include <nifman.h>

#include <Es_sock.h>

 

#if defined __WINS__

_LIT(KConnectIP,"192.168.0.1");//连接的ip地址,换成测试的ip

#else

_LIT(KConnectIP,"10.0.0.172");//移动的cmwap代理网关

#endif

const int KConnectPort = 80;//端口

HBufC8 *SocketGetUrl(TDesC8 &geturl);

void TestSocket()

{

    _LIT8(KSendData, "POST http:://www.google.com.cn http/1.1\r\n\r\n");

    TBuf8<128> sendData(KSendData);

    HBufC8 *body = SocketGetUrl(sendData);

    if(body)

    {

        //服务器端返回的数据处理

        delete body;

    }

}

HBufC8 *SocketGetUrl(TDesC8 &geturl)

{

    RNif iNif;

    RSocket iSocket;

    TRequestStatus iStatus = KRequestPending;

    TBuf8<512> writeBuf(geturl);

    TBuf8<64> recvBuf;

    HBufC8 *iBuffer = NULL;

   

    iNif.Open();

    {

        RSocketServ iSocketServ;

        User::LeaveIfError(iSocketServ.Connect());

        TInetAddr iAddress;

        if (iAddress.Input(KConnectIP) == KErrNone)

        {

            User::LeaveIfError(iSocket.Open(iSocketServ, KAfInet, KSockStream, KProtocolInetTcp));

            iAddress.SetPort(KConnectPort);

           

            iStatus = KRequestPending;

            iSocket.Connect(iAddress, iStatus);

            User::WaitForRequest(iStatus);

            if (iStatus.Int() ==KErrNone)

            {

                iStatus = KRequestPending;

                iSocket.Write(writeBuf,iStatus);

                User::WaitForRequest(iStatus);

                if (iStatus.Int() ==KErrNone)

                {

                    TSockXfrLength iDummyLength;

                    TInt recvSize = 0;

                   

                    for(;;)

                    {

                        iStatus = KRequestPending;

                        iSocket.RecvOneOrMore(recvBuf, 0, iStatus, iDummyLength);

                        User::WaitForRequest(iStatus);

                       

                        if (iStatus.Int()==KErrNone)

                        {

                            recvSize += recvBuf.Length();

                            if(iBuffer==NULL)

                                iBuffer = HBufC8::NewL(recvSize);

                            else

                                iBuffer = iBuffer->ReAlloc(recvSize);

                            iBuffer->Des().Append(recvBuf);

                        }

                        else

                        {

                            break;

                        }

                    }

                }

            }

            iSocket.Close();

        }

       

        iSocketServ.Close();

    }

    iNif.Close();

    return iBuffer;

}

此段代码只是对socket用法的简单介绍,没有超时处理,如果要做超时处理的话,请自己添加。

 

分享到:
评论

相关推荐

    Symbian OS端到端socket编程案例

    需要注意的是,Symbian OS中的Socket操作是阻塞的,因此需要正确处理同步和异步通信。 6. **关闭Socket**:通信结束后,应调用`Close()`函数关闭Socket,释放资源。 在"End-to-End_Sockets_API_Example"这个压缩包...

    Symbian 2nd source code socket

    - 在Symbian中,使用`NewL()`或`NewLC()`函数动态创建Socket对象,并通过调用`Open()`方法来指定协议族(如IPv4或IPv6)和套接字类型(如流套接字或数据报套接字)。 2. **连接与监听**: - 对于客户端,使用`...

    Symbian+网络编程之使用Socket+API.rar

    《Symbian操作系统中的网络编程:借助Socket API实现通信详解》 Symbian操作系统作为曾经在智能手机领域广泛应用的系统,其强大的功能和灵活性使得开发者能够进行深入的网络编程。本资料集围绕“Symbian+网络编程之...

    symbian socket通信编程代码UCP

    在Symbian中,我们通常使用数据报式Socket来实现UDP通信。 **三、创建UDP Socket** 1. **初始化网络层**:首先,调用`RSocketServ`类的`CreateLocal()`静态方法初始化网络服务。 2. **打开Socket**:接着,通过`...

    symbian Socket引擎设计和实现

    本文将详细介绍Symbian中Socket引擎的设计思想、关键技术点以及其实现细节。 #### 二、Symbian Socket引擎概述 ##### 2.1 Socket引擎的重要性 Socket引擎是Symbian系统中用于实现网络通信的核心模块之一。它主要...

    symbian socket通信编程代码TCP

    在Symbian操作系统中,Socket通信是实现设备间网络数据传输的一种基础机制,主要应用于TCP/IP协议栈。TCP(Transmission Control Protocol)是一种面向连接、可靠的传输协议,它保证了数据包在传输过程中的顺序和...

    Symbian 网络编程之使用Socket API

    在Symbian操作系统中,网络编程的一个重要方面是使用Socket API。Socket API允许开发者创建能够进行网络通信的应用程序,无论是互联网、红外线还是蓝牙技术。本文主要针对Symbian平台的开发者,旨在介绍如何利用...

    symbian socket

    压缩包中的"socket"文件可能包含了Symbian平台上的Socket编程实例,包括HTTP客户端和服务端、UDP客户端和服务端的代码,这些代码可以作为学习和开发的参考。 综上所述,Symbian上的Socket编程涉及到网络通信的基础...

    socket和socket_listener

    在Symbian的Socket编程中,客户端通常使用`RSocket`类来创建连接到服务器的Socket。它需要服务器的IP地址和端口号,然后调用`Connect()`函数发起连接请求。连接成功后,客户端和服务器就可以通过读写Socket数据流...

    symbian 短信拦截 socket

    小小的例子 socket拦截 没有提示窗体 没有短信声音 如果调试时没有成功 去下载S60_3rd_SDK_MR_API_Plug-In_Pack_v5_43.zip 里面有一个SMSUtilities.ZIP 把里面的东西放到相应的 模拟器文件夹中再试试

    symbian s60第三版socket通信例子,适用于初学者!

    - 如果需要多个线程同时访问Socket,需使用锁或其他同步机制来保护Socket操作。 7. **监听与接受连接**: - 对于服务器端,使用`Listen()`函数开启监听,然后通过`Accept()`函数等待客户端的连接请求。 8. **...

    sms socket

    使用Socket进行SMS拦截,可能需要使用到系统级别的库,如AT命令集来控制SIM卡模块,或者利用特定的Symbian SDK提供的短信API。 5. **SmsIntercet文件**: 压缩包中的"SmsIntercet"很可能是一个实现了SMS Socket...

    Symbian中TabView的用法

    标题“Symbian中TabView的用法”意味着我们将讨论如何在Symbian应用中集成和操作TabView。在Symbian开发中,TabView通常由CTabView类表示,它是CAknTabGroup的子类。下面是一些关于如何使用TabView的关键知识点: 1...

    JME试题及答案 socket 多线程 高级UI

    - **解析**:`Sprite`对象通常不直接使用`paint()`方法进行绘制,而是通过调用Canvas的`drawImage()`等方法来完成。 **4. MIDP中Gauge的使用** 正确选项为 **B**:False - **解析**:MIDP中的`Gauge`类用于实现...

    Socket 结合活动对象 详细 深入讲解

    在介绍具体的实现细节之前,我们首先了解Socket的基本概念以及如何在Symbian系统中使用Socket进行DNS解析。 **Socket**是一种用于在网络中实现进程间通信的方式,它基于TCP/IP协议栈。在Symbian平台中,可以通过`...

    Symbian中文技术周刊

    《Symbian中文技术周刊》是一系列专注于Symbian操作系统技术的资料集合,涵盖了内存管理、模拟器配置、socket编程以及DBMS等多个关键领域。在深入探讨这些主题之前,我们首先需要了解Symbian系统的基本架构和特性。 ...

    手机同步的特征与简介_同步d触发器特征方程.docx

    手机同步的特征与简介_同步d触发器特征方程 手机同步简介: 手机同步是一款免费的支持个人重要...手机同步是一款功能强大、使用便捷、安全可靠的手机数据备份和同步软件,可以满足用户对个人数据的备份和同步需求。

    symbian开发中字体使用方法源码

    本资源"Font"包含了关于Symbian开发中字体使用的源码示例,旨在帮助开发者深入理解和掌握这一关键技能。 1. **TFont** 类 Symbian平台上的`TFont`类是处理字体的核心,它包含了关于字体样式、大小、颜色等信息。`...

    Symbian中显示中文汉字(3种方法).

    ### Symbian中显示中文汉字(3种方法) 在Symbian操作系统中处理中文显示是一项基本但又重要的功能。本文将详细介绍三种不同的方法来实现这一功能,并解释每种方法的具体步骤和技术要点。 #### 方法一:使用UTF-8...

Global site tag (gtag.js) - Google Analytics