SOCKET m_sockClient;

unsigned short portNum;

-----------------------------------------------------------------------------------------

bool connect(unsigned short portNum);

void DisConnectHost();

short SendCmd(AnsiString sendData);
short ReceiveData(AnsiString *recvData);

-----------------------------------------------------------------------------------------

bool connect(unsigned short portNum)

{

//加载套接字库
    WORD wVersionRequested;
    WSADATA wsaData;
    int err=0;

    wVersionRequested=MAKEWORD(1,1);

    err=WSAStartup(wVersionRequested,&wsaData);
    if(err!=0)
    {
        return false;
    }

    if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1)
    {

        WSACleanup();
        return false;
    }

    //创建套接字
    m_sockClient=socket(AF_INET,SOCK_STREAM,0);
    SOCKADDR_IN addrSrv;
    addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.3.230");
    addrSrv.sin_family=AF_INET;
    addrSrv.sin_port=htons(portNum);
        ///////////////////////////////////
    //向服务器发出连接请求
    err=connect(m_sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
    if(err!=0)
    {
        return false;
    }
    return true;

}

-----------------------------------------------------------------------------------------

void DisConnectHost()

{

closesocket(m_sockClient); //close(m_sockClient);
    WSACleanup();

}

-----------------------------------------------------------------------------------------

short SendCmd(AnsiString sendData)

{

int  sendLength=0;
        int len=sendData.Length();
    sendLength = send(m_sockClient,sendData.c_str(),len,0);
    if(sendLength!=len)
    {
        return NETERROR; 
    }

    return CMDOK;

}

-----------------------------------------------------------------------------------------
short ReceiveData(AnsiString *recvData)

{

 int recvLen=0;
    char p[256] = {0};
    recvLen = recv(m_sockClient,p,256,0);
    if(recvLen==SOCKET_ERROR)
    {
        return NETERROR;
    }
        recvData->sprintf("%s",p);
    return CMDOK;

}

TCP网络编程-----客户端请求连接服务器、向服务器发数据、从服务器接收数据、关闭连接的更多相关文章

  1. Java - TCP网络编程

    Java - TCP网络编程 Server 逻辑思路: 创建ServerSocket(port),然后服务器的socket就启动了 循环中调用accept(),此方法会堵塞程序,直到发现用户请求,返回 ...

  2. QT--TCP网络编程(客户端/服务器)

    QT -----TCP网络编程   1.主要流程 1.客户端 创建QTcpSocket对象 连接到服务器 --connectToHost() 发送数据 ---write() 读取数据 ---readA ...

  3. Linux下TCP网络编程与基于Windows下C#socket编程间通信

    一.linux下TCP网络编程基础,需要了解相关函数 Socket():用于套接字初始化. Bind():将 socket 与本机上的一个端口绑定,就可以在该端口监听服务请求. Listen():使s ...

  4. JAVA TCP网络编程学习笔记

    一.JAVA网络编程概述 网络应用程序,就是在已实现网络互联的不同计算机上运行的应用程序,这些程序之间可以相互交换数据.JAVA是优秀的网络编程语言,Java网络编程的类库位于java.net包中.J ...

  5. TCP网络编程

    TCP网络编程  与UDP不同的是TCP是通过客服端和服务端的方式来传输数据的.客服端:public class TCPClient { /**     * @param args     * @th ...

  6. 【Linux网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系

    [Linux网络编程]TCP网络编程中connect().listen()和accept()三者之间的关系 基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: conn ...

  7. 简述TCP网络编程本质

    基于事件的非阻塞网络编程是编写高性能并发网络服务程序的主流模式,头一次使用这种模式编程需要转换思维模式 .把原来的"主动调用recv()来接收数据,主动调用accept()来接受连接,主动调 ...

  8. 8-2udp和tcp网络编程以及粘包和解决粘包的方法

    一  tcp网络编程 server 端 import socket sk=socket.socket() #实例化一个对象 sk.setsockopt(socket.SOL_SOCKET,socket ...

  9. Java网络编程客户端和服务器通信

    在java网络编程中,客户端和服务器的通信例子: 先来服务器监听的代码 package com.server; import java.io.IOException; import java.io.O ...

随机推荐

  1. 使用oracle DB_LINK的一个注意点

    今天使用db_link的时候遇到了个有趣的问题,和大家分享一下; 环境:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bi ...

  2. tensorflow MNIST新手教程

    官方教程代码如下: import gzip import os import tempfile import numpy from six.moves import urllib from six.m ...

  3. Effective Java 第三版——3. 使用私有构造方法或枚类实现Singleton属性

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  4. 《深入理解java虚拟机》笔记——简析java类文件结构

    一直不太搞得明确jvm究竟是如何进行类载入的,在看资料的过程中迷迷糊糊.在理解类载入之前,首先看看java的类文件结构究竟是如何的,都包含了哪些内容. 最直接的參考当然是官方文档:The Java® ...

  5. swift手记-4

    // // ViewController.swift // learn4 // // Created by myhaspl on 16/1/23. // Copyright (c) 2016年 myh ...

  6. Clang-Format: Visual Studio Style

    PointerAlignment: Left UseTab: Never IndentWidth: 4 BreakBeforeBraces: Allman AllowShortIfStatements ...

  7. 【quickhybrid】API规划

    前言 当一切就绪后,就要开始进行API规划,这一块是整个Hybrid框架中非常重要的内容,毕竟对于前端页面来说,只会通过JS API来调用功能. 基本上,API调用起来是否方便简洁影响着整个体验. 这 ...

  8. java注解(转并做修改)

    本文由 ImportNew - 人晓 翻译自 idlebrains.欢迎加入翻译小组.转载请见文末要求. 自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分.开发过程中,我们也 ...

  9. javascript 面向对象设计之 Function 普通类

    var test = "Class01"; function Class01(privateValue, publicValue) { var _this = this; if ( ...

  10. idea svn 设置忽略 文件

    这里的忽略一直灰色的,可以进入 这里的版本控制里进行忽略选择 或者 这里进行添加 这里有三个选择 按照顺序 1.忽略指定的文件 2.忽略文件夹下所有文件 3.忽略符合匹配规则的文件 到Commit C ...