#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(,),&wsadata)!=)
{
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(); if (connect(sClient,(sockaddr*)&LocalAddr,sizeof(LocalAddr))==SOCKET_ERROR)
{ // WSAENETDOWN
int a = GetLastError();
closesocket(sClient); printf("Connect Is Error\n"); return;
} HANDLE hThread[]; //这里是整个程序的核心部分我们一定要那个管道图 hThread[] = CreateThread(NULL,,ThreadOutput,NULL,,NULL); hThread[] = CreateThread(NULL,,ThreadInput,NULL,,NULL); WaitForMultipleObjects(,hThread,TRUE,INFINITE); } DWORD WINAPI ThreadInput(LPVOID lpParam)
{
SOCKET s = sClient; //该线程函数是从套接字中获取信息并且通过管道注入cmd的工作函数 char Buffer[] = {}; DWORD dWrite = ;
DWORD dwRecvd = ;
while (TRUE)
{ scanf("%s",Buffer); send(s,Buffer,strlen(Buffer),);
} return ;
} DWORD WINAPI ThreadOutput(LPVOID lpParam)
{ SOCKET s = sClient; //该线程函数是从被控端返给控端信息的线程函数 char Buffer[]={};
while (TRUE)
{ int Ret = recv(s,Buffer,,); if(Ret<)
{
break;
} Buffer[Ret]='\0'; printf("%s",Buffer); } return ;
}

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

  1. 链路的有效性检测 及 基于TCP的通信为什么需要RETRY

    一.链路的有效性检测 当网络发生单通.连接被防火墙Hang住.长时间GC或者通信线程发生非预期异常时,会导致链路不可用且不易被及时发现. 特别是异常发生在凌晨业务低谷期间,当早晨业务高峰期到来时,由于 ...

  2. 【TCP/IP网络编程】:04基于TCP的服务器端/客户端

    摘要:结合前面所讲述的知识,本篇文章主要介绍了简单服务器端和客户端实现的框架流程及相关函数接口. 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字(本 ...

  3. 基于TCP协议的客户端

    基于TCP协议的客户端 此客户端能用于下一篇博客的单线程服务器和多线程服务器 import java.io.BufferedReader; import java.io.IOException; im ...

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

    什么是 Socket Socket 是应用层与 TCP/IP 协议通信的中间软件抽象层,它是一组接口.在设计模式中,Socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议族隐藏在 Sock ...

  5. 基于TCP的安卓客户端开发

    一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户 ...

  6. Linux 系统编程 学习:008-基于socket的网络编程3:基于 TCP 的通信

    背景 上一讲我们介绍了 基于UDP 的通信 这一讲我们来看 TCP 通信. 知识 TCP(Transmission Control Protoco 传输控制协议). TCP是一种面向广域网的通信协议, ...

  7. C/C++网络编程4——实现基于TCP的服务器端/客户端1

    一.TCP服务器调用顺序: 调用socket函数创建套接字:声明并初始化地址信息结构体变量:调用bind函数向套接字分配地址:调用listen函数进入等待连接请求状态,只有调用了listen函数后客户 ...

  8. Android 基于TCP多线程通信实现群聊天的功能

    1.TCP多线程原理图 2.实现方法 (1)服务器端 (2)客户端 3.java后台代码 主界面 package com.lucky.test50socket2; import android.ann ...

  9. 基于TCP的通信程序设计

    套接字(Socket)是一种跨主机进程之间的双向通信接口,每个打开的套接字都可以通过一个套接字描述符来描述,因此可以使用低级文件编程库操作套接字. TCP是一中面向连接的网络传输控制协议.它每发送一个 ...

随机推荐

  1. Build Up Your Own Lightweight Workspace

    写一段简单的批处理(.bat)放在自己建的workspace下. @set path=C:/Program Files/Java/jdk1.8.0_101/bin;%PATH%; //jdk的路径 @ ...

  2. js中event.keyCode用法及keyCode对照表

    HTML 用户名:<input type="text" id="UserAccount" onKeyPress="JumpByEnter(Use ...

  3. 20160805_Cent6.4x64_安装配置(含网卡驱动的配置)

    ZC: 全程 root用户 操作. 1.我在BIOS中将 UEFI关闭了,然后 才安装的 Cent6.4x64 (ZC: 安装系统时,一起安装了 gcc等一些编程用的包.本来是想安装QT时少点麻烦的, ...

  4. 自定义view获取宽高

    View在构造函数初始化并未布局处理,此时宽高均为0,待所有控件初始化完毕后,由上级容器对内部各控件进行布局,此时控件才会具有位置与大小属性,可以通过以下方法获取:1.在ondraw()函数中获取,2 ...

  5. Call requires API level 3 (current min is 1)

    结果出现“Call requires API level 3 (current min is 1): 解决方法: 在工程上点击右键 -> Android Tools -> Clear Li ...

  6. Web打印使用printThis.js

    <script src="~/Content/JQueryTools/printThis/printThis.js"></script>

  7. JQUERY学习(贰)

    一.操作一组jQuery对象 1.遍历 $("").each(fun); 2.求长度:length   size() 3.获得某一个jQuery对象 $("") ...

  8. 使用mybatis操作mysql数据库SUM方法返回NULL解决

    使用SQL语句用函数SUM叠加的时候,默认查询没有值的情况下返回的是NULL,而实际可能我们要用的是返回0 解决: SELECT SUM(total)   FROM test_table 改成: SE ...

  9. jmeter 建立一个JMS点对点测试计划

      确保所需的jar文件在JMeter的 自由 目录中. 如果他们不是,关闭JMeter, 重启JMeter复制jar文件. 看到 开始 获取详细信息.   测试的设置是1与5线程发送4 thread ...

  10. selenium+python笔记1

    #!/usr/bin/env python # -*- coding: utf-8 -*- """@desc: 讲讲web项目中常用的方法属性 webdriver 提供了 ...