基于TCP的通信 客户端

#include <WINSOCK2.H>  

#include <stdio.h>
// socket   套接字

#pragma comment (lib,"Ws2_32")   //library 

DWORD WINAPI ThreadInput(LPVOID lpParam);
DWORD WINAPI ThreadOutput(LPVOID lpParam);

SOCKET  sClient;

void main()
{
    //first    初始化DLL
    WSADATA wsadata;
    if (WSAStartup(MAKEWORD(2,2),&wsadata)!=0)
    {
        printf("Init Error\n");

        return ;
    }

    //second  创建套接字

    sClient = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); 

    if (sClient == INVALID_SOCKET)
    {
        printf("Create Listen Is Error\n");

        return;
    }

    sockaddr_in  LocalAddr;

    LocalAddr.sin_family = AF_INET;

    LocalAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");   //127.0.0.1

    LocalAddr.sin_port = htons(8888);

    if (connect(sClient,(sockaddr*)&LocalAddr,sizeof(LocalAddr))==SOCKET_ERROR)
    {

    //    WSAENETDOWN
        int a = GetLastError();
        closesocket(sClient);

        printf("Connect Is Error\n");

        return;
    }

    HANDLE hThread[2];

    //这里是整个程序的核心部分我们一定要那个管道图

    hThread[0] = CreateThread(NULL,0,ThreadOutput,NULL,0,NULL);

    hThread[1] = CreateThread(NULL,0,ThreadInput,NULL,0,NULL);

    WaitForMultipleObjects(2,hThread,TRUE,INFINITE);

}

DWORD WINAPI ThreadInput(LPVOID lpParam)
{
    SOCKET s = sClient;

    //该线程函数是从套接字中获取信息并且通过管道注入cmd的工作函数

    char Buffer[4096] = {0};

    DWORD dWrite = 0;
    DWORD dwRecvd = 0;
    while (TRUE)
    {

        scanf("%s",Buffer);

        send(s,Buffer,strlen(Buffer),0);
    }

    return 0;
}

DWORD WINAPI ThreadOutput(LPVOID lpParam)
{

     SOCKET s = sClient;

    //该线程函数是从被控端返给控端信息的线程函数

    char Buffer[4096]={0};
    while (TRUE)
    {

        int Ret = recv(s,Buffer,4096,0);

        if(Ret<0)
        {
            break;
        }

        Buffer[Ret]=‘\0‘;

        printf("%s",Buffer);

    }

    return 0;
}
时间: 2025-02-01 10:05:08

基于TCP的通信 客户端的相关文章

Learning-Python【28】:基于TCP协议通信的套接字

什么是 Socket Socket 是应用层与 TCP/IP 协议通信的中间软件抽象层,它是一组接口.在设计模式中,Socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议族隐藏在 Socket 接口后面,对用户来说,一组简单的接口就是全部,让 Socket 去组织数据,以符合指定的协议. 所以,我们无需深入理解 TCP/UDP 协议,socket 已经为我们封装好了,我们只需要遵循 socket 的规定去编程,写出的程序自然就是遵循 TCP/UDP 标准的. 套接字的分类: 基于文件

python中基于tcp协议的通信(数据传输)

tcp协议:流式协议(以数据流的形式通信传输).安全协议(收发信息都需收到确认信息才能完成收发,是一种双向通道的通信) tcp协议在OSI七层协议中属于传输层,它上承用户层的数据收发,下启网络层.数据链路层.物理层.可以说很多安全数据的传输通信都是基于tcp协议进行的. 为了让tcp通信更加方便需要引入一个socket模块(将网络层.数据链路层.物理层封装的模块),我们只要调用模块中的相关接口就能实现传输层下面的繁琐操作. 简单的tcp协议通信模板:(需要一个服务端和一个客户端) 服务端: fr

浅析C#基于TCP协议的SCOKET通信

TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程.然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序. C#基于TCP协议的网络通讯 要进行C#基于TCP协议的网络通讯,首先必须建立同远程主机的连接,连接地址通常包括两部分--主机名和端口,

基于TCP的客户端、服务器端socket编程

一.实验目的 理解tcp传输客户端服务器端通信流程 二.实验平台 MAC OS 三.实验内容 编写TCP服务器套接字程序,程序运行时服务器等待客户的连接,一旦连接成功,则显示客户的IP地址.端口号,并向客户端发送字符串. 四.实验原理 使用TCP套接字编程可以实现基于TCP/IP协议的面向连接的通信,它分为服务器端和客户端两部分,其主要实现过程如下 服务器端代码: 1 #include "iostream" 2 #include "netdb.h" 3 #inclu

基于多线程的TCP socket通信经典案例

服务器端 package com.thinkvenus.study.socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; /** *

初识Socket通信:基于TCP和UDP协议学习网络编程

学习笔记: 1.基于TCP协议的Socket网络编程: (1)Socket类构造方法:在客户端和服务器端建立连接 Socket s = new Socket(hostName,port);以主机名和端口号作为参数来创建一个Socket对象. Socket s = new Socket(address,port);以InetAddress对象和端口号作为参数来创建一个Socket对象. 创建Socket对象时可能抛出UnknownHostException或IOException异常,必须捕获它们

Java Socket实现基于TCP和UDP多线程通信

一.通过Socket实现TCP编程 1.1 TCP编程 TCP协议是面向连接,可靠的,有序的,以字节流的方式发送数据.基于TCP协议实现网络通信的类有客户端的Socket类和服务器端的ServerSocket类. 1.2 服务器端套路 1.创建ServerSocket对象,绑定监听端口. 2.通过accept()方法监听客户端请求. 3.连接建立后,通过输入流读取客户端发送的请求信息. 4.通过输出流向客户端发送响应信息. 5.关闭响应的资源. 1.3 客户端套路 1.创建Socket对象,指明

基于networkcomms V3通信框架的c#服务器与java客户端进行通信之Protobuf探讨

在上一篇 基于networkcomms V3通信框架的c#服务器与java客户端进行通信探讨  中探讨了在C#端与Java端通信中传递字符,有朋友提到如果传递int类型的整数,会出现编码的问题. 到网上找到了一篇文章< 使用protobuf进行C#与Java通信 >进行学习 ,使用protobuf进行编码,传递数据,好像这样可以避免编码的问题. (虽然编码问题解决了,但是粘包问题并没有解决,有经验的朋友介绍下怎样解决粘包的问题) 服务器端基于networkcomms V3 C#通信框架. ne

基于TCP的Socket通信

这里的例程跟前面"基于TCP的Socket"类似,前面是客户端给服务器端发信息,这里是服务器端给客户端发信息 TCP通信模式: TCP/IP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket,从而在通信两端之间形成网络虚拟链路. 一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信. Java使用Socket对象来代表两端的通信接口,并通过Socket产生I/O流来进行网络通信. SimpleServer.java  服务器程序,不需要建立Android项目,