下面未处理异常

tcpserver.cpp

#include "WinSock2.h"
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 1666
int main()
{
WORD wVersion = MAKEWORD(, );
int err;
WSADATA wsaData;
err = WSAStartup(wVersion, &wsaData);
SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, NULL);
sockaddr_in addSrv;
addSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //或用inet_addr("192.168.1.1");
addSrv.sin_family = AF_INET;
addSrv.sin_port = htons(PORT);
bind(sockSrv, (sockaddr FAR *)&addSrv, sizeof(addSrv));
int iResult = listen(sockSrv, SOMAXCONN);//等待连结数, 最大连接请求数 SOMAXCONN
printf("server ip:%s\n", inet_ntoa(addSrv.sin_addr));
printf("server port:%d\n", ntohs(addSrv.sin_port));
printf("start listening...\n"); while(TRUE)
{
sockaddr_in addClient;
int iLen = sizeof(addClient);
SOCKET sockConn = accept(sockSrv, (sockaddr FAR *)&addClient, &iLen);
printf("client ip:%s\n", inet_ntoa(addClient.sin_addr));
printf("client port:%d\n", ntohs(addClient.sin_port));
char sendBuf[];
sprintf(sendBuf, "Welcome %s to server", inet_ntoa(addClient.sin_addr));
send(sockConn, sendBuf, strlen(sendBuf) + , ); //多写一个字节, 可以多个\0
char recvBuf[];
recv(sockConn, recvBuf, , ); //tcp用recv, udp用recvfrom
printf("%s\n", recvBuf);
closesocket(sockConn);
}
closesocket(sockSrv);
WSACleanup();
return ;
}

tcpclient.cpp

#include "WinSock2.h"
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 1666
int main()
{
WORD wVersion = MAKEWORD(, );
int err;
WSADATA wsaData;
err = WSAStartup(wVersion, &wsaData);
SOCKET sockClient = socket(AF_INET, SOCK_STREAM, NULL);
sockaddr_in addSrv;
addSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //服务器地址
addSrv.sin_family = AF_INET;
addSrv.sin_port = htons(PORT);
connect(sockClient, (sockaddr FAR *)&addSrv, sizeof(addSrv));
char recvBuf[];
recv(sockClient, recvBuf, , );
printf("%s\n", recvBuf);
send(sockClient, "hello123", strlen("hello123") + , );
closesocket(sockClient);
WSACleanup();
system("pause");
return ;
}

udpserver.cpp

#include "WinSock2.h"
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 1666
int main()
{
WORD wVersion = MAKEWORD(, );
int err;
WSADATA wsaData;
err = WSAStartup(wVersion, &wsaData);
SOCKET sockSrv = socket(AF_INET, SOCK_DGRAM, NULL);
sockaddr_in addSrv;
addSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //或用inet_addr("192.168.1.1");
addSrv.sin_family = AF_INET;
addSrv.sin_port = htons(PORT);
bind(sockSrv, (sockaddr FAR *)&addSrv, sizeof(addSrv)); printf("server ip:%s\n", inet_ntoa(addSrv.sin_addr));
printf("server port:%d\n", ntohs(addSrv.sin_port)); while(TRUE)
{
sockaddr_in addClient;
int iLen = sizeof(addClient);
char recvBuf[];
recvfrom(sockSrv, recvBuf, , , (sockaddr*)&addClient, &iLen);
printf("client ip:%s\n", inet_ntoa(addClient.sin_addr));
printf("client port:%d\n", ntohs(addClient.sin_port));
printf("%s", recvBuf);
}
closesocket(sockSrv);
WSACleanup();
return ;
}

udpclient.cpp

#include "WinSock2.h"
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 1666
int main()
{
WORD wVersion = MAKEWORD(, );
int err;
WSADATA wsaData;
err = WSAStartup(wVersion, &wsaData);
SOCKET sockClient = socket(AF_INET, SOCK_DGRAM, NULL);
sockaddr_in addSrv;
addSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //或用inet_addr("192.168.1.1");
addSrv.sin_family = AF_INET;
addSrv.sin_port = htons(PORT);
sendto(sockClient, "hello", strlen("hello") + , , (SOCKADDR*)&addSrv, sizeof(addSrv));
closesocket(sockClient);
WSACleanup();
system("pause");
return ;
}

代码下载

MFC学习 socket的更多相关文章

  1. 【总结】学习Socket编写的聊天室小程序

    1.前言 在学习Socket之前,先来学习点网络相关的知识吧,自己学习过程中的一些总结,Socket是一门很高深的学问,本文只是Socket一些最基础的东西,大神请自觉绕路. 传输协议 TCP:Tra ...

  2. MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变

    1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量:           CToolBar m_toolbar;CImageList ...

  3. python学习------socket编程

    一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频 ...

  4. 基于MFC的socket编程

    网络编程 1.windows 套接字编程(开放的网络编程接口)添加头文件#include<windows.h> 2.套接字及其分类 socket分为两种:(1)数据报socket:无连接套 ...

  5. 在Android手机上学习socket程序

    我们都知道Android手机是基于Linux系统的,在没有Linux环境,但是想学习socket编程的同学可以在Android手机中试试,利用ndk编译可执行文件在Android手机中运行.不同于动态 ...

  6. MFC学习笔记1---准备工作

    什么是MFC MFC,全称Microsoft Foundation Classes,微软基础类库,顾名思义,是微软的攻城狮们将一些常用的基础的Windows API 函数用C++的形式封装成类,简化程 ...

  7. MFC 学习笔记

    MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介 ...

  8. 新手MFC学习之Socket练习

    事实上MFC这东西吧,好像也不光是MFC,非常多东西,事实上我如今才感觉到,假设想高速做一个东西出来的话.是没有必要系统的学关于这个东西的所有知识的.比方我想做一个MFC相似QQ的软件,可是我又不想花 ...

  9. 基于MFC的socket编程(异步非阻塞通信)

       对于许多初学者来说,网络通信程序的开发,普遍的一个现象就是觉得难以入手.许多概念,诸如:同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)等,初学者往往迷惑不清, ...

随机推荐

  1. 用javacsv API 来操作csv文件

    javacsv是国外开发的一个比较好的操作csv文件的API,这里简单讲一下用法. 先下载javacsv2.0.zip的文件,解压后,把javacsv.jar 添加到项目中.  本站下载地址: htt ...

  2. UIview定义背景图片

    UIImage *image = [UIImage imageNamed:@"bgimagename"];    UIView *view = [[UIView alloc]ini ...

  3. log4net 部署到服务器之后 无法记录日志问题 解决方法

    通常情况下无法记录日志的原因是:权限问题 1. 右键该站点的程序文件夹>>安全 2. 找到 IIS_IUSR 用户,然后编辑权限 允许修改,保存即可 3. 搞定

  4. Hadoop:实战Web日志分析

    示例场景 日志说明 有两台Web服务器,日志文件存放在/usr/local/nginx/logs/目录,日志默认为nginx定义格式.如: 123.13.17.13 - - [25/Aug/2016: ...

  5. 黄聪:wordpress后台导致fonts.googleapis.com、ajax.googleapis.com加载慢的解决方法

    方法1.使用我做的插件.[googleapis-to-useso] 方法2.在functions.php文件里面添加下面的代码就行了. if(is_admin()) { function hcsem_ ...

  6. Authentication token manipulation error for ubuntu ubuntu-16.04.1-desktop-amd64

    https://ubuntuforums.org/showthread.php?t=1772894 Hi, I faced the same problem when I tried to recov ...

  7. input file 上传文件

    面试的时候遇到一个问题,要求手写的方式上传文件. 本来觉得很简单,但是结果怎么也成功不了. 前台: <form ID="form1" action="AcceptF ...

  8. HttpClient和HttpURLConnection整合汇总对比

    性能 1.HttpUrlConnection直接支持GZIP压缩:HttpClient也支持,但要自己写代码处理. 2.HttpUrlConnection直接支持系统级连接池,即打开的连接不会直接关闭 ...

  9. Xshell5最新版激活

    Xshell是一个用于MS Windows平台的强大的SSH,TELNET,和RLOGIN终端仿真软件.它使得用户能轻松和安全地从Windows PC上访问Unix/Linux主机. 以上内容全部为广 ...

  10. JavaScript表单验证实例

    1. 长度限制<script>function test(){if(document.a.b.value.length>50){alert("不能超过50个字符!" ...