Socket编程入门 很实用

为实现本地游戏多人登录和对战,采用C/S(客户端/服务器)模式。作者分享了转载的相关博文及代码,包含服务器端和客户端代码示例,还建议学习时结合代码理解,最后表示要继续编写代码。

为了将本地游戏实现多人登录和对战,采用了C/S (客户端 / 服务器)模式

但是问题来了,没学过啊!!!!!!!

所以在网上找了篇博文,写的简练而且很易懂,所以偷偷拿来给大家分享一下哈~

是转载!!!!!

其实原作者也是转载,这个是国外翻译之作,

原网址:http://www.cnblogs.com/L-hq815/archive/2012/07/09/2583043.html

提一个小建议,再学习的时候结合下面的代码理解起来会更容易

简单总结一下客户端和服务端的模式吧  (小声bb)

代码也是转载

服务器端

#include <WinSock2.h>
#include <stdio.h>
#pragma comment(lib,"WS2_32.lib")

void main()
{
    WSADATA wsd;
    SOCKET server;                                            //服务器socket
    SOCKADDR_IN addrSrv;
    char sendBuf[100];
    char recvBuf[100];
    SOCKADDR_IN addrClient;
    SOCKET client;                                            //连接的客户端socket
    int len;
    if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0)
    {
        printf("start up failed!\n");
        return;
    }
    server = socket(AF_INET, SOCK_STREAM, 0);                    //创建socket
    addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);            //设置地址
    addrSrv.sin_family = AF_INET;
    addrSrv.sin_port = htons(6000);                            //设置端口号
    bind(server, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));        //绑定
    listen(server, 5);                                        //设置最多连接数
    len = sizeof(SOCKADDR);
    while (1)
    {
        client = accept(server, (SOCKADDR*)&addrClient, &len);    //接收客户端连接
        send(client, "123徐海涛hunk xu", strlen(sendBuf) + 1, 0);            //发送信息客户端
        recv(client, recvBuf, 100, 0);                            //接收客户端数据
        printf("%s\n", recvBuf);
        closesocket(client);
    }
    closesocket(client);                                    //关闭连接
    WSACleanup();
}
 

客户端

#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib,"WS2_32.lib")
void main()
{
    WSADATA wsd;
    SOCKET sockClient;                                            //客户端socket
    SOCKADDR_IN addrSrv;
    char recvBuf[100];
    if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0)
    {
        printf("start up failed!\n");
        return;
    }
    sockClient = socket(AF_INET, SOCK_STREAM, 0);                    //创建socket
    addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
    addrSrv.sin_family = AF_INET;
    addrSrv.sin_port = htons(6000);
    connect(sockClient, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));    //连接服务器端
    recv(sockClient, recvBuf, 100, 0);                                //接收服务器端数据
    send(sockClient, "hello world", strlen("hello world") + 1, 0);    //向服务器端发送数据
    closesocket(sockClient);                                    //关闭连接
    WSACleanup();
    printf(recvBuf);
    system("pause");
}
啥也不说了  肝代码去了。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值