简单socket编程实例

   windows操作系统中进行socket编程,服务器和客户端要各司其职,简单来说,

服务器端需要做的工作有:

    1.创建套接字(socket函数)

    2.锁定IP地址和端口(bind函数)

    3.监听进入的链接(listen函数)

    4.接受连接(accept函数)

    5.收发数据(send/recv函数)

    6.关闭连接(closesocket函数)

客户端需要的做的工作有:

    1.创建套接字(socket函数)

    2.连接到服务器端(connect函数)

    3.收发数据(send/recv函数)

    4.关闭连接(closesocket函数)

    以下是一个简单的例子,代码是从网上找来的。但是感觉有些地方写的不够好,就稍微修改了一些地方,也勉强算原创吧。如下:

以上是服务器端的代码,下面是客户端的代码:

这里面有几个地方需要注意一下:

1.这是windows控制台程序(console application)

2.Server.cpp中,有这样一行代码:

     LocalAddr.sin_addr.s_addr = INADDR_ANY;

    这样,在后面调用bind()函数的时候,程序就会把ServerSocket绑定在本电脑的IP地址上。当然,我们也可以指定一个固定的IP地址,就比如说程序中注释起来的两行代码:

      #define  IP_ADDRESS "127.0.0.1"

      LocalAddr.sin_addr.s_addr = inet_addr(IP_ADDRESS);

    不过,个人感觉用INADDR_ANY是最好的了,因为后者只能和客户端在同一台电脑上测试的时候才能正常运行,如果服务器端和客户端在不同的电脑上,后者就不行了。而前者即INADDR_ANY是一直行的。

3.Client.cpp中利用下面的代码进行参数的检查:

      if(argc != 2)

      {

           fprintf(stderr, "usage: %s <IP>/n", argv[0]);

           ExitProcess(1);

      }

    假设客户端的可执行程序为clientSocket.exe,那么运行的时候应该遵循这样的格式:

     clientSocket IP

    这里的IP指的是服务器端的IP地址。

    我使用VC6.0编译器编译了源代码,生成的可执行文件完全可用,呵呵。

转载自:http://canmeng.blog.51cto.com/2589556/536047,其附件中包含源代码。

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值