// soClient.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib") int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsadata;
WORD dVer=MAKEWORD(,);
WSAStartup(dVer,&wsadata); SOCKET S=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(S==INVALID_SOCKET)
{
return FALSE;
}
sockaddr_in serverAddr;
serverAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
serverAddr.sin_family=AF_INET;
serverAddr.sin_port=htons();
if(::connect(S,(LPSOCKADDR)&serverAddr,sizeof(serverAddr))==SOCKET_ERROR)
{
if(WSAGetLastError()==)
{
printf("服务器未开启");
}
return FALSE;
} char buff[];
int irecv=::recv(S,buff,,);
if(irecv>)
{
buff[irecv] = '\0'; //返回数据不会结束所以人工添加
printf("返回数据为:%s",buff);
} closesocket(S);
return ;
}

服务器

 // soServer.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include "winsock2.h"
#pragma comment(lib,"ws2_32.lib") int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsadata;
WORD dVer=MAKEWORD(,);
if(WSAStartup(dVer,&wsadata)!=)
{
return FALSE;
} sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_addr.S_un.S_addr=INADDR_ANY;
sin.sin_port=htons();
SOCKET S=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(::bind(S,(LPSOCKADDR)&sin,sizeof(sin))==SOCKET_ERROR)
{
return FALSE;
} if(::listen(S,)==SOCKET_ERROR)
{
return FALSE;
} sockaddr_in remoteAddr;
int nAddrLen = sizeof(remoteAddr);
SOCKET sClient;
char text[]="you have connected!welcome!";
printf("等待接受连接。\r\n");
while(TRUE)
{
sClient=::accept(S,(LPSOCKADDR)&remoteAddr,&nAddrLen);
if(sClient==SOCKET_ERROR)
{
printf("获取失败");
continue;
}
printf("接收到新连接:%s",inet_ntoa(remoteAddr.sin_addr));
send(sClient,text,strlen(text),);
closesocket(sClient);
}
closesocket(S);
return ;
}

简单的TCPIP 客户端 服务器的更多相关文章

  1. [Netty] - Netty入门(最简单的Netty客户端/服务器程序)

    Java中的NIO是一种解决阻塞式IO问题的基本技术,但是NIO的编写对java程序员是有比较高的要求的.那么Netty就是一种简化操作的一个成熟的网络IO编程框架.这里简单介绍一个程序,代码是< ...

  2. [转]Netty入门(最简单的Netty客户端/服务器程序)

    Java中的NIO是一种解决阻塞式IO问题的基本技术,但是NIO的编写对java程序员是有比较高的要求的.那么Netty就是一种简化操作的一个成熟的网络IO编程框架.这里简单介绍一个程序,代码是< ...

  3. Linux 下 简单客户端服务器通讯模型(TCP)

    原文:Linux 下 简单客户端服务器通讯模型(TCP) 服务器端:server.c #include<stdio.h> #include<stdlib.h> #include ...

  4. 入门教程:.NET开源OpenID Connect 和OAuth解决方案IdentityServer v3 创建简单的OAuth2.0服务器,客户端和API(三)

    本教程的目的在于创造尽可能简单的identityserver安装作为一个oauth2授权服务器.这应该能够让你了解一些基本功能和配置选项(完整的源代码可以发现在这里).在后面的文档中会介绍更多的高级功 ...

  5. Python的套接字、IPv4和简单的客户端/服务器编程

    #!/usr/bin/env python # -*- coding: utf-8 -*- import socket from binascii import hexlify import sys ...

  6. python 异步IO-aiohttp与简单的异步HTTP客户端/服务器

    参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143209814 ...

  7. 微服务(入门四):identityServer的简单使用(客户端授权)

    IdentityServer简介(摘自Identity官网) IdentityServer是将符合规范的OpenID Connect和OAuth 2.0端点添加到任意ASP.NET核心应用程序的中间件 ...

  8. Golang学习-第二篇 搭建一个简单的Go Web服务器

    序言 由于本人一直从事Web服务器端的程序开发,所以在学习Golang也想从Web这里开始学起,如果对Golang还不太清楚怎么搭建环境的朋友们可以参考我的上一篇文章 Golang的简单介绍及Wind ...

  9. 使用OAuth保护REST API并使用简单的Angular客户端

    1.概述 在本教程中,我们将使用OAuth保护REST API并从简单的Angular客户端使用它. 我们要构建的应用程序将包含四个独立的模块: 授权服务器 资源服务器 UI implicit - 使 ...

随机推荐

  1. tcp-ip-状态详解(转)

    TCP正常建立和关闭的状态变化     TCP连接的建立可以简单的称为三次握手,而连接的中止则可以叫做 四次握手.   建立连接   在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建 ...

  2. 最大期望算法 Expectation Maximization概念

    在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Lat ...

  3. BestCoder Round #85 hdu5776 sum

    sum 题意: 问题描述 给定一个数列,求是否存在连续子列和为m的倍数,存在输出YES,否则输出NO 输入描述 输入文件的第一行有一个正整数T,表示数据组数. 接下去有T组数据,每组数据的第一行有两个 ...

  4. 深入分析ConcurrentHashMap(转)

    线程不安全的HashMap 因为多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap,如以下代码 final HashMap ...

  5. bootstrap-按钮样式

    <div class="container"> <!-- 按钮的背景色 --> <div class="row"> < ...

  6. python输出重定向

    0表示标准输入1表示标准输出2表示标准错误输出> 默认为标准输出重定向,与 1> 相同2>&1 意思是把 标准错误输出 重定向到 标准输出.&>file 意思是 ...

  7. [ActionScript3.0] 为内建类添加方法

    通过使用prototype在继承内建类特性的同时加入新方法 Array.prototype.removeElement = function (item:*):void { var index:int ...

  8. Oracle中常用操作

    查看表中的字段名和类型 SELECT column_name,DATA_TYPE FROM cols WHERE TABLE_NAME=upper('tableName') ORDER BY COLU ...

  9. sql server 作业导出放到另外一台机器执行时报错的解决方法

    SQL Server2008脚本创建作业失败,提示: 引用内容消息 515,级别 16,状态 2,过程 sp_add_job,第 137 行不能将值 NULL 插入列 'owner_sid',表 'm ...

  10. android studio 更新 Gradle错误解决方法

    Android Studio每次更新版本都会更新Gradle这个插件,但由于长城的问题每次更新都是失败,又是停止在Refreshing Gradle Project ,有时新建项目的时候报 Gradl ...