两者代码基本一致

关于套接字:

甲方:

   #include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <fcntl.h> int main()
{
int ret = ;
int fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(fd < ){
perror("socket");
exit(EXIT_FAILURE);
}
struct sockaddr_in gg;
gg.sin_family = AF_INET;
gg.sin_port = htons();
gg.sin_addr.s_addr = inet_addr("192.168.1.10");
ret = bind(fd, (struct sockaddr *)&gg, );
if(ret < ){
perror("bind");
return ;
}
unsigned char buff[] = {};
unsigned char data[] = {};
struct sockaddr_in mm;
mm.sin_family = AF_INET;
mm.sin_port = htons();
mm.sin_addr.s_addr = inet_addr("192.168.1.10");
int mm_len = ;
while(){
fd_set st;
FD_ZERO(&st);
FD_SET(fd, &st);
FD_SET(, &st);
ret = select(fd+, &st, , , );
if(ret < ){
perror("select");
return ;
}
if(FD_ISSET(fd, &st)){
memset(buff, , );
ret = recvfrom(fd, buff, , , (struct sockaddr *)&mm, &mm_len);
if(ret < ){
perror("recvfrom");
exit(EXIT_FAILURE);
}
printf("gg said :%s", buff);
}
if(FD_ISSET(, &st)){
memset(data, , );
read(, data, );
ret = sendto(fd, data, strlen(data), , (struct sockaddr *)&mm, );
if(ret < ){
perror("sendto");
exit(EXIT_FAILURE);
}
} }
close(fd);
}

乙方:

   #include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <fcntl.h> int main()
{
int ret = ;
int fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(fd < ){
perror("socket");
exit(EXIT_FAILURE);
}
struct sockaddr_in mm;
mm.sin_family = AF_INET;
mm.sin_port = htons();
mm.sin_addr.s_addr = inet_addr("192.168.1.10");
ret = bind(fd, (struct sockaddr *)&mm, );
if(ret < ){
perror("bind");
return ;
}
unsigned char buff[] = {};
unsigned char data[] = {};
struct sockaddr_in gg;
gg.sin_family = AF_INET;
gg.sin_port = htons();
gg.sin_addr.s_addr = inet_addr("192.168.1.10");
int gg_len = ;
while(){
fd_set st;
FD_ZERO(&st);
FD_SET(fd, &st);
FD_SET(, &st);
ret = select(fd+, &st, , , );
if(ret < ){
perror("select");
return ;
}
if(FD_ISSET(fd, &st)){
memset(buff, , );
ret = recvfrom(fd, buff, , , (struct sockaddr * )&gg, &gg_len);
if(ret < ){
perror("recvfrom");
exit(EXIT_FAILURE);
}
printf("mm said :%s", buff);
}
if(FD_ISSET(, &st)){
memset(data, , );
read(, data, );
ret = sendto(fd, data, strlen(data), , (struct sockaddr *)&gg, );
if(ret < ){
perror("sendto");
exit(EXIT_FAILURE);
}
}
}
close(fd);
}
~

UDP聊天实现(简单版)的更多相关文章

  1. go 聊天室简单版总结

    /* * 思路:在登录成功时将用户的id存进在线用户列表中的key value中链接的ws为空,并保存用户的信息. * 当跳转到聊天室时,将用户和聊天室链接的ws存进在线用户列表中的 * 问题:如何在 ...

  2. 采用tcp协议和UDP协议实现简单的聊天功能

    Date: 2019-06-19 Author: Sun 一. Python3输出带颜色字体 实现过程: ​ 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. ​ 转义 ...

  3. python—多任务版udp聊天机器人

    将多任务(多线程)引入到udp聊天机器人,可以实现同时发送消息和接收消息 import socket import threading def udp_send(udp_socket,ip,port) ...

  4. python网络聊天器多线程版

    在之前的一篇文章(python网络编程-udp)中实现了一个简单的udp聊天器,只能在单线程下进行收发数据,在学习完多线程之后,实现一个能同时收发数据的udp聊天器. 说明: 编写一个有2个线程的程序 ...

  5. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  6. JavaSE项目之聊天室swing版

    引子: 当前,互联网 体系结构的参考模型主要有两种,一种是OSI参考模型,另一种是TCP/IP参考模型. 一.OSI参考模型,即开放式通信系统互联参考模型(OSI/RM,Open Systems In ...

  7. JavaMail简单版实验测试

    前言: 最近由于实现web商城的自动发送邮件功能的需求,故涉猎的邮箱协议的内部原理.现将简单版的Java Mail实例做个代码展示,并附上其中可能出现的bug贴出,方便感兴趣的读者进行测试! 1.载入 ...

  8. 小米抢购(简单版v0.1)-登录并验证抢购权限,以及获取真实抢购地址

    小米(简单版)-登录并验证抢购权限,以及获取真实抢购地址! 并不是复制到浏览器就行了的   还得传递所需要的参数 这里只是前部分  后面的自己发挥了 { "stime": 1389 ...

  9. Java实现简单版SVM

    Java实现简单版SVM 近期的图像分类工作要用到latent svm,为了更加深入了解svm,自己动手实现一个简单版的.         之所以说是简单版,由于没实用到拉格朗日,对偶,核函数等等.而 ...

  10. 三十天学不会TCP,UDP/IP网络编程-UDP,从简单的开始

    如果对和程序员有关的计算机网络知识,和对计算机网络方面的编程有兴趣,欢迎去gitbook(https://www.gitbook.com/@rogerzhu/)star我的这一系列文章,虽然说现在这种 ...

随机推荐

  1. HDU 1045(Fire Net)题解

    以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定大小的棋盘中部分格子存在可以阻止互相攻击的墙,问棋盘中可以放置最多多少个可以横纵攻击炮塔. [题目分析] 这题本来在搜索专题 ...

  2. OpenCV配置(Java)

    配置环境:MyEclipse2013+Jdk1.7(32位)+OpenCV 2.4.8+win8.1(64位) OpenCV安装路径:d:\Users\opencv为例 1.       导入Jar包 ...

  3. PHP 魔术常量__FUNCTION__与__METHOD__的区别

    __FUNCTION__ 返回 函数名称(PHP 4.3.0 新加).自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写).在 PHP 4 中该值总是小写字母的.    __METHOD__ ...

  4. yii2 安装过程中的问题及解决方法

    一.php版本要求5.4+,如果使用wamp组合包,建议更换 二.各种模块的支持,一般只要修改php.ini文件,去掉相应模块前的注释即可. 注意,Intl extension模块的支持需要将     ...

  5. ContentProvider类的解析

    一.ContentProvider类 1.作用:专门用于不同应用之间进行数据共享的方式. 二.实现方法 1.创建ContenteProvider类 步骤一:继承ContentProvider接口,重写 ...

  6. intial-scale=1的含义

    meta name="viewport" content="width=device-width,initial-scale=1.0" 解释  <meta ...

  7. 百用随身系统 Veket Linux

    Veket Linux 是一个随身的可装在U盘的Linux操作系统. 特点:1,随身系统,装在U盘可走遍天下,它几乎支持“所有”的电脑,就我所接触得到的电脑它都支持并成功驱动,就这十多年的安装的电脑都 ...

  8. ab压力测试报错: apr_socket_recv: Connection reset by peer (104)

    使用ab对网站进行压力测试,开始设置并发500,可以正常使用,当设置并发为1000,则报错: apr_socket_recv: Connection reset by peer (104) 改服务端a ...

  9. C/C++各种系统开发环境搭建

    http://pan.baidu.com/s/1qWJKF4g

  10. Android4.2中Phone的P-sensor的应用的分析。

    先说现象,现象就是来电话,接通电话,把手机屏幕靠近脸部,遮挡住P-sensor,屏幕变黑了,不遮挡住P-sensor,屏幕就点亮了.接着我们来看看代码流程. 步骤一: 在PhoneGlobals.ja ...