1.新建一个工程区Net

在工作区中添加两个工程 NetSrv 和 NetClient

为两个工程添加库文件 (Link中) ws2_32.lib

2.在工程NetSrv中添加Server.cpp文件

代码如下:

#include <WINSOCK2.H>
#include <stdio.h>
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||    HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup( );
return;
}
SOCKET sockSrv = socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6000);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
char recvBuf[100];
char sendBuf[100];
char tempBuf[200];
SOCKADDR_IN addrClient;
int len = sizeof(SOCKADDR);
while (1)
{
recvfrom(sockSrv , recvBuf, 100, 0, (SOCKADDR*)&addrClient,&len);
if ('q'==recvBuf[0])
{
sendto(sockSrv,"q",strlen("q")+1, 0 , (SOCKADDR*)&addrClient,len);
printf("Chat end!\n");
break;
}
sprintf(tempBuf,"%s say : %s",inet_ntoa(addrClient.sin_addr),recvBuf);
printf("%s\n",tempBuf);
printf("Please input data:\n");
gets(sendBuf);
sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrClient,len);
}
closesocket(sockSrv);
WSACleanup();
}

3.在工程NetClient中添加Client.cpp文件

代码如下:

#include <WINSOCK2.H>
#include <stdio.h>
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup();
return;
}
SOCKET sockClient = socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port = htons(6000);
char recvBuf[100];
char sendBuf[100];
char tempBuf[200];
int len = sizeof(SOCKADDR);
while (1)
{
printf("Please input data:\n");
gets(sendBuf);
sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrSrv,len);
recvfrom(sockClient,recvBuf,100,0,(SOCKADDR*)&addrSrv,&len);
if ('q' == recvBuf[0])
{
sendto(sockClient,"q",strlen("q")+1,0,(SOCKADDR*)&addrSrv,len);
printf("Chat end!\n");
break;
}
sprintf(tempBuf,"%s say : %s",inet_ntoa(addrSrv.sin_addr),recvBuf);
printf("%s\n",tempBuf);
}
closesocket(sockClient);
WSACleanup();
}

4.先运行服务端程序,再运行客户端程序

可以聊天了,但是只能客户端发一句,服务端发一句,比较呆板

基于Udp的Socket网络编程聊天程序相关推荐

  1. Socket网络编程--聊天程序(8)

    上一节已经完成了对用户的身份验证了,既然有了验证,那么接下来就能对不同的客户端进行区分了,所以这一节讲实现私聊功能.就是通过服务器对客户端的数据进行转发到特定的用户上, 实现私聊功能的聊天程序 实现的 ...

  2. 基于Udp的Socket网络编程

    1.新建一个工作空间 Udp 添加两个工程UdpClient 和 UdpSrv 2.在工程UdpSrv中添加UdpSrv.cpp文件 代码如下: #include <Winsock2.h> ...

  3. Socket网络编程--聊天程序(3)

    上一小节,已经讲到可以每个人多说话,而且还没有限制,简单的来说,我们已经完成了聊天的功能了,那么接下来我们要实现什么功能呢?一个聊天程序至少应该支持一对多的通讯吧,接下来就实现多个客户端往服务器发送数 ...

  4. Socket网络编程--聊天程序(2)

    上一节简单如何通过Socket创建一个连接,然后进行通信.只是每个人只能说一句话.而且还是必须说完才会接收到信息,总之是很不方便的事情.所以这一小节我们将对上一次的程序进行修改,修改成每个人可以多说话 ...

  5. 基于Linux的socket网络编程项目——游侠手机商城

    基于Linux的socket网络编程项目--游侠手机商城 一.项目说明 二.项目使用的技术 三.客户端搭建 四.服务器端搭建 一.项目说明 本项目是一个仿真手机商城类系统,基本功能: 登录界面功能:用 ...

  6. socket网络编程 java_Java Web 基础(一) 基于TCP的Socket网络编程

    一.Socket简单介绍 Socket通信作为Java网络通讯的基础内容,集中了异常.I/O流模式等众多知识点.学习Socket通信,既能够了解真正的网络通讯原理,也能够增强对I/O流模式的理解. 1 ...

  7. step5 . day4 网络编程 基于UDP协议的网络编程流程及API

    UDP协议是面向无连接,不可靠的传输协议,编程流程如下; 服务器端: 1. socket(),返回一个文件描述符,用于通信 2. bind(); //得先完成结构体的填充sockaddr_in 3. ...

  8. 基于TCP的Socket网络编程,有图有代码

    1.新建一个工作区 Tcp 在工作区中添加两个工程 TcpSrv(服务端)和TcpClient (客户端) 2.在工程TcpSrv添加TcpSrv.cpp文件 代码如下: #include <W ...

  9. Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver

    今日内容:socket网络编程     1.OSI七层协议     2.基于tcp协议的套接字通信     3.模拟ssh远程执行命令     4.tcp的粘包问题及解决方案     5.基于udp协 ...

最新文章

  1. 5分钟掌握手动优化机器学习模型超参数
  2. python sqlite数据库一对多_Python:使用sqlite3进行多处理
  3. 运维岗位技能风向标!
  4. 【练习】c++删除链表倒数第K个结点和 插入排序算法将单链表递增排序
  5. router-link-active 和 router-link-exact-active router-link-active
  6. weex监听android返回键,weex使用手册
  7. [Unity] FlowCanvas 使用注意事项
  8. 【转】Android SDK Manager 更新方法
  9. 深入分析Ribbon源码分析
  10. 第一次写CSDN的博客
  11. GAEA Winsieve v1.2 1CD(快速输入和打印结晶粒度分析曲线)
  12. 用PyTorch完成手写数字识别
  13. win10系统WiFi突然消失打不开,终极解决方法
  14. FATAL: kernel too old
  15. 什么是AWS Athena
  16. 简析BlockingQueue
  17. 微信惊现超级大Bug:试过的人都哭了...
  18. 父母不要对孩子说的10句话
  19. web前端:波浪舞动开机动画loading,原生css、js,@keyframes应用
  20. Log of Grade Two

热门文章

  1. ECMAScript:客户端脚本语言的标准
  2. google python代码规范_Python代码这样写才规范优雅! (二)
  3. JavaScript中循环遍历JSON响应
  4. 前端学成什么样就能找工作了?
  5. Web 前端怎样入门?
  6. php 简单的socket,【技术产品】PHP如何实现简单的Socket
  7. 如何修改influxdb表结构_influxdb基本操作
  8. spring 事务_极限 Spring (4) Spring 事务
  9. 编辑器未包含main类型_Shopify模版编辑器问题排查及解决办法汇总
  10. jp在java中无法编译_为什么我的JAVA程序无法编译呢?