我的第一个socket程序!

哈哈,终于写了第一个socket程序!!但愿是个good beginning:

// Client.cpp : Defines the entry point for the console application.

//

//客户端

#include "stdafx.h"

#include <winsock2.h>

#include <iostream>

 

#pragma comment(lib, "Ws2_32.lib")

int main(int argc, char* argv[])

{

       SOCKET socket_client = -1;

       try

       {

              //Windows 的初始化

              printf("****Client stated!****/n");

              WSADATA WsaData;

              if(WSAStartup(MAKELONG(1,0), &WsaData) != 0)

              {

                     throw ("WSAStartUp()");

                     return -1;

              }

              //初始化socket

              socket_client = socket(AF_INET, SOCK_STREAM, 0);

              if(socket_client < 0)

              {

                     throw("socket()");

              }

              //本机信息

              sockaddr_in my_addr;

              my_addr.sin_family = AF_INET;

              my_addr.sin_port = htons(5555);

              my_addr.sin_addr.S_un.S_addr = INADDR_ANY;

              memset(my_addr.sin_zero, 0, 8);

             

              //绑定端口

              int nbind = bind(socket_client, (sockaddr*)&my_addr, sizeof(my_addr));

              if(nbind < 0)

              {

                     throw ("bind()");

              }

              //连接:

              sockaddr_in server_add;

              server_add.sin_family = AF_INET;

              server_add.sin_port = htons(3490);

              server_add.sin_addr.S_un.S_addr = inet_addr("192.168.0.119");

              memset(server_add.sin_zero, 0, 8);

             

             

              int nCon = connect(socket_client, (sockaddr*)&server_add, sizeof(server_add));

              if(nCon < 0)

              {

                     throw("connect()");

              }

       }

       catch(char* lpErrorFunc)

       {

              printf("Error when calling: %s/n", lpErrorFunc);

       }

       if(socket_client != -1)

              closesocket(socket_client);

       WSACleanup();

       return 0;

}

 

// Server.cpp : Defines the entry point for the console application.

//

//服务器

#include "stdafx.h"

#include "stdafx.h"

#include <winsock2.h>

#include <iostream>

 

#pragma comment(lib, "Ws2_32.lib")

 

int main(int argc, char* argv[])

{

       SOCKET socket_server = -1;

       try

       {

              //Windows 的初始化

              printf("****Server stated!****/n");

              WSADATA WsaData;

              if(WSAStartup(MAKELONG(1,0), &WsaData) != 0)

              {

                     throw "WSAStartup()";

              }

              //初始化socket

              socket_server = socket(AF_INET, SOCK_STREAM, 0);

              if(socket_server < 0)

              {

                     throw "socket()";

              }

              //本机信息

              sockaddr_in my_addr;

              my_addr.sin_family = AF_INET;

              my_addr.sin_port = htons(3490);

              my_addr.sin_addr.S_un.S_addr = INADDR_ANY;

              memset(my_addr.sin_zero, 0, 8);

             

              //绑定端口

              int nbind = bind(socket_server, (sockaddr*)&my_addr, sizeof(my_addr));

              if(nbind < 0)

              {

                     throw "bind()";

              }

              //

              int nlisten = listen(socket_server, 5);

              if(nlisten < 0)

              {

                     throw "listen()";

              }

              //监听

              printf("Listening....../n");

              sockaddr_in their_addr;

              int nSize;

              nSize = sizeof(their_addr);

              int nNewFd = accept(socket_server, (sockaddr*)&their_addr, &nSize);

             

              //有用户接入

              printf("Accepted! IP:%s: Port:%d/n", inet_ntoa(their_addr.sin_addr), ntohs(their_addr.sin_port));

              Beep(500, 1000);

              char szBuf[255];

              scanf("%s", szBuf);

       }

       catch(char* lpErrorFunc)

       {

              printf("Error when calling: %s/n", lpErrorFunc);

       }

       if(socket_server != -1)

              closesocket(socket_server);

       WSACleanup();

       return 0;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值