简单的TCPIP 客户端 服务器
// 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 客户端 服务器的更多相关文章
- [Netty] - Netty入门(最简单的Netty客户端/服务器程序)
Java中的NIO是一种解决阻塞式IO问题的基本技术,但是NIO的编写对java程序员是有比较高的要求的.那么Netty就是一种简化操作的一个成熟的网络IO编程框架.这里简单介绍一个程序,代码是< ...
- [转]Netty入门(最简单的Netty客户端/服务器程序)
Java中的NIO是一种解决阻塞式IO问题的基本技术,但是NIO的编写对java程序员是有比较高的要求的.那么Netty就是一种简化操作的一个成熟的网络IO编程框架.这里简单介绍一个程序,代码是< ...
- Linux 下 简单客户端服务器通讯模型(TCP)
原文:Linux 下 简单客户端服务器通讯模型(TCP) 服务器端:server.c #include<stdio.h> #include<stdlib.h> #include ...
- 入门教程:.NET开源OpenID Connect 和OAuth解决方案IdentityServer v3 创建简单的OAuth2.0服务器,客户端和API(三)
本教程的目的在于创造尽可能简单的identityserver安装作为一个oauth2授权服务器.这应该能够让你了解一些基本功能和配置选项(完整的源代码可以发现在这里).在后面的文档中会介绍更多的高级功 ...
- Python的套接字、IPv4和简单的客户端/服务器编程
#!/usr/bin/env python # -*- coding: utf-8 -*- import socket from binascii import hexlify import sys ...
- python 异步IO-aiohttp与简单的异步HTTP客户端/服务器
参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143209814 ...
- 微服务(入门四):identityServer的简单使用(客户端授权)
IdentityServer简介(摘自Identity官网) IdentityServer是将符合规范的OpenID Connect和OAuth 2.0端点添加到任意ASP.NET核心应用程序的中间件 ...
- Golang学习-第二篇 搭建一个简单的Go Web服务器
序言 由于本人一直从事Web服务器端的程序开发,所以在学习Golang也想从Web这里开始学起,如果对Golang还不太清楚怎么搭建环境的朋友们可以参考我的上一篇文章 Golang的简单介绍及Wind ...
- 使用OAuth保护REST API并使用简单的Angular客户端
1.概述 在本教程中,我们将使用OAuth保护REST API并从简单的Angular客户端使用它. 我们要构建的应用程序将包含四个独立的模块: 授权服务器 资源服务器 UI implicit - 使 ...
随机推荐
- ServletContext(重要)
一个项目只有一个ServletContext对象! 我们可以在N多个Servlet中来获取这个唯一的对象,使用它可以给多个Servlet传递数据! 这个对象在Tomcat启动时就创建,在Tomcat关 ...
- CF 501C Misha and Forest 好题
C. Misha and Forest Let's define a forest as a non-directed acyclic graph (also without loops and ...
- PDF内容不允许复制的解决方法!
PDF文档的内容不允许复制解决方法! PDF的加密有两个级别: 一个是Owner级别,就是打开文档时需要输入密码PDF Password Remover可以用来破解Owner级别的口令,但是不能用于破 ...
- 四步轻松实现用Visio画UML类图
本节和大家一起学习一下用Visio画UML类图的方法,主要有四个步骤,这里和大家分享一下,相信通过本节的学习,你对Visio画UML类图的步骤一定会有所了解. 用Visio画UML类图 对于画类图的工 ...
- ruby-rails 环境搭建
https://ruby-china.org/wiki/install_ruby_guide
- Android应用框架浅析
http://blog.csdn.net/yanbober/article/category/3206943 Android应用层View绘制流程与源码分析 http://blog.csdn.ne ...
- [ActionScript 3.0] AS3 ConvolutionFilter卷积滤镜的应用
ConvolutionFilter 类应用矩阵盘绕滤镜效果.卷积将输入图像的像素与相邻的像素合并以生成图像.通过卷积,可以实现大量的图像效果,包括模糊.边缘检测.锐化.浮雕和斜角.您可以将滤镜应用于任 ...
- Delphi同步互斥总结
多个线程同时访问一个共享资源或数据时,需要考虑线程同步,Synchronize()是在一个隐蔽的窗口里运行,如果在这里你的任务很繁忙,你的主窗口会阻塞掉:Synchronize()只是将该线程的代码放 ...
- Android - 禁止Gridview滚动
设置gridview 的touch事件,是ACTION_MOVE 的话返回true mDragGrid.setOnTouchListener(new OnTouchListener() { @Over ...
- Matlab学习:读取指定文件夹及其五级子文件夹内的文件
OpenCV2.4.X版本提供了三个函数来读取指定目录内的文件,它们分别是: (1)GetListFiles:读取指定目录内所有文件,不包含子目录: (2)GetListFilesR:读取指定目录及其 ...