Chinaunix首页 | 论坛 | 博客
  • 博客访问: 150754
  • 博文数量: 12
  • 博客积分: 1401
  • 博客等级: 上尉
  • 技术积分: 415
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-04 12:36
文章分类
文章存档

2009年(1)

2008年(11)

我的朋友

分类: C/C++

2008-03-29 20:29:28

十分简单的客户端

//coffeexp
#include "stdafx.h"
#include
using namespace std;

UINT startClient(LPVOID );
int _tmain()
{
    AfxBeginThread(startClient,0);
    getchar();
    return 0;
}

UINT startClient(LPVOID pParam)
{
    cout<<"client started!"<    SOCKET fd;
    WSADATA wsaData;
    sockaddr_in server_addr;
    char recvbuff[1024];
    memset(recvbuff,0,1024);

    int wsaret=WSAStartup(0x101,&wsaData);
    if(wsaret!=0)
        return 0;
    server_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
    server_addr.sin_family=AF_INET;
    server_addr.sin_port=htons((u_short)50000);

    fd=socket(AF_INET,SOCK_STREAM,0);
    if(fd==INVALID_SOCKET)
        cout<<"socket create error"<    if(connect(fd,(sockaddr*)&server_addr,sizeof(server_addr)))
    {
        cout<<"connect error"<        closesocket(fd);
        return 0;
    }
    if(recv(fd,recvbuff,sizeof(recvbuff),0))
    {
    CString aa(recvbuff);
    wcout<<"Data is:  "<    }
    closesocket(fd);
    WSACleanup();

    return 0;
}

服务端程序:
#include "stdafx.h"
#include
using namespace std;

UINT ServerThread(LPVOID );

int _tmain()
{
    AfxBeginThread(ServerThread,0);
    getchar();
    return 0;
}
UINT ServerThread(LPVOID pParam)
{
    cout<<"Starting TCP server...."<    SOCKET server;
    WSADATA wsaData;
    sockaddr_in local;
    int wsaret=WSAStartup(0x101,&wsaData);
    if(wsaret!=0)
        return 0;
    local.sin_family=AF_INET;
    local.sin_addr.s_addr=INADDR_ANY;
    local.sin_port=htons(50000);
    server=socket(AF_INET,SOCK_STREAM,0);
    if(server==INVALID_SOCKET)
        return 0;
    if(bind(server,(sockaddr*)&local,sizeof(local))!=0)
        return 0;
    if(listen(server,2)!=0)
        return 0;
    SOCKET client;   
    sockaddr_in from;
    int length=sizeof(from);
    while(true)
    {
        CString s(L"you ip is :");
        client =accept(server,(sockaddr*)&from,&length);
        s+=inet_ntoa(from.sin_addr);
        wcout<<(LPCTSTR)s<        send(client,(char*)(LPCTSTR)s,s.GetLength(),0);
        cout<<"message had send to "<        closesocket(client);
    }
    closesocket(server);
    WSACleanup();

    return 0;
}


这里面有个有趣的问题,将S正确发到client,但client打印时只能显示第一个即"y",这就是著名的unicode ascii的转换。写在这里留个记念。






阅读(1032) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:linux下 mysql 安装经验

给主人留下些什么吧!~~