socket tcp

server:

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

#include "stdafx.h"
#pragma comment(lib, "ws2_32.lib")
#include <Winsock2.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;
   
    wVersionRequested = MAKEWORD(1,1);
    err = WSAStartup(wVersionRequested,&wsaData);
    if(err != 0) {
        return 0;
    }
   
    if(LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) {
        WSACleanup();
        return 0;
    }
   
    /* 创建Socket */
    SOCKET sockSvr = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);  
   
    /* 创建IP地址和端口 */
    SOCKADDR_IN addrSvr;
    addrSvr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
    addrSvr.sin_family = AF_INET;
    addrSvr.sin_port = htons(6000);
   
    /* 绑定端口监听 */
    bind(sockSvr,(SOCKADDR*)&addrSvr,sizeof(SOCKADDR));
    listen(sockSvr, 5);
   
    sockaddr_in addrClient;
    int len = sizeof(sockaddr);
    while(true) {
        /* 阻塞方法,获得一个客户Socket连接 */
        SOCKET sockConn = accept(sockSvr,(sockaddr*)&addrClient,&len);
        char sendbuffer[128];
        sprintf(sendbuffer,"Welcome %s!",inet_ntoa(addrClient.sin_addr));
       
        /* 向客户Socket发送数据 */
        send(sockConn,sendbuffer,strlen(sendbuffer)+1,0);
        char recvbuffer[128];
       
        /* 从客户Soc接受数据 */
        recv(sockConn,recvbuffer,128,0);
        printf("%s/n",recvbuffer);
       
        /* 关闭Socket */
        closesocket(sockConn);
    }
   
    closesocket(sockSvr);
    /* 释放Winsock资源 */
    WSACleanup();
 return 0;
}

client:

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

#include "stdafx.h"
#pragma comment(lib,"ws2_32.lib")
#include <Winsock2.h>
#include <stdio.h>  

int main(int argc, char* argv[])
{
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;

    wVersionRequested = MAKEWORD(1,1);
    err = WSAStartup(wVersionRequested,&wsaData);
    if(err!=0) {
        return 0;
    }
   
    if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1) {
        WSACleanup();
        return 0;
    }  
   
    /* 创建连向服务器的套接字 */
    SOCKET sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);  
   
    /* 创建地址信息 */
    SOCKADDR_IN hostAddr;
    hostAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.53");
    hostAddr.sin_family = AF_INET;
    hostAddr.sin_port = htons(6000);

    /* 连接服务器 */
    connect(sock,(sockaddr*)&hostAddr,sizeof(sockaddr));
    char revBuf[128];  
   
    /* 从服务器获得数据 */
    recv(sock,revBuf,128,0);
    printf("%s/n",revBuf);  

    /* 向服务器发送数据 */
    send(sock,"Hello Host!",12,0);

    closesocket(sock);
 return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值