UDP聊天实现(简单版)

两者代码基本一致

关于套接字:

甲方:

  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <netinet/in.h>
  4 #include <stdlib.h>
  5 #include <sys/socket.h>
  6 #include <fcntl.h>
  7
  8 int main()
  9 {
 10         int ret = 0;
 11         int fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
 12         if(fd < 0){
 13                 perror("socket");
 14                 exit(EXIT_FAILURE);
 15         }
 16         struct sockaddr_in gg;
 17         gg.sin_family = AF_INET;
 18         gg.sin_port = htons(9527);
 19         gg.sin_addr.s_addr = inet_addr("192.168.1.10");
 20         ret = bind(fd, (struct sockaddr *)&gg, 16);
 21         if(ret < 0){
 22                 perror("bind");
 23                 return 1;
 24         }
 25         unsigned char buff[1024] = {0};
 26         unsigned char data[1024] = {0};
 27         struct sockaddr_in mm;
 28         mm.sin_family = AF_INET;
 29         mm.sin_port = htons(9528);
 30         mm.sin_addr.s_addr = inet_addr("192.168.1.10");
 31         int mm_len = 0;
 32         while(1){
 33                 fd_set st;
 34                 FD_ZERO(&st);
 35                 FD_SET(fd, &st);
 36                 FD_SET(0, &st);
 37                 ret = select(fd+1, &st, 0, 0, 0);
 38                 if(ret < 0){
 39                         perror("select");
 40                         return 1;
 41                 }
 42                 if(FD_ISSET(fd, &st)){
 43                         memset(buff, 0, 1024);
 44                         ret = recvfrom(fd, buff, 1024, 0, (struct sockaddr *)&mm, &mm_len);
 45                         if(ret < 0){
 46                                 perror("recvfrom");
 47                                 exit(EXIT_FAILURE);
 48                         }
 49                         printf("gg said :%s", buff);
 50                 }
 51                 if(FD_ISSET(0, &st)){
 52                         memset(data, 0, 1024);
 53                         read(0, data, 1024);
 54                         ret = sendto(fd, data, strlen(data), 0, (struct sockaddr *)&mm, 16);
 55                          if(ret < 0){
 56                                 perror("sendto");
 57                                 exit(EXIT_FAILURE);
 58                         }
 59                 }
 60
 61         }
 62         close(fd);
 63 }

乙方:

  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <netinet/in.h>
  4 #include <stdlib.h>
  5 #include <sys/socket.h>
  6 #include <fcntl.h>
  7
  8 int main()
  9 {
 10         int ret = 0;
 11         int fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
 12         if(fd < 0){
 13                 perror("socket");
 14                 exit(EXIT_FAILURE);
 15         }
 16         struct sockaddr_in mm;
 17         mm.sin_family = AF_INET;
 18         mm.sin_port = htons(9528);
 19         mm.sin_addr.s_addr = inet_addr("192.168.1.10");
 20         ret = bind(fd, (struct sockaddr *)&mm, 16);
 21         if(ret < 0){
 22                 perror("bind");
 23                 return 1;
 24         }
 25         unsigned char buff[1024] = {0};
 26         unsigned char data[1024] = {0};
 27         struct sockaddr_in gg;
 28         gg.sin_family = AF_INET;
 29         gg.sin_port = htons(9527);
 30         gg.sin_addr.s_addr = inet_addr("192.168.1.10");
 31         int gg_len = 0;
 32         while(1){
 33                 fd_set st;
 34                 FD_ZERO(&st);
 35                 FD_SET(fd, &st);
 36                 FD_SET(0, &st);
 37                 ret = select(fd+1, &st, 0, 0, 0);
 38                 if(ret < 0){
 39                         perror("select");
 40                         return 1;
 41                 }
 42                 if(FD_ISSET(fd, &st)){
 43                         memset(buff, 0, 1024);
 44                         ret = recvfrom(fd, buff, 1024, 0, (struct sockaddr *                                                                    )&gg, &gg_len);
 45                         if(ret < 0){
 46                                 perror("recvfrom");
 47                                 exit(EXIT_FAILURE);
 48                         }
 49                         printf("mm said :%s", buff);
 50                 }
 51                 if(FD_ISSET(0, &st)){
 52                         memset(data, 0, 1024);
 53                         read(0, data, 1024);
 54                         ret = sendto(fd, data, strlen(data), 0, (struct sockaddr *)&gg, 16);
 55                          if(ret < 0){
 56                                 perror("sendto");
 57                                 exit(EXIT_FAILURE);
 58                         }
 59                 }
 60         }
 61         close(fd);
 62 }
~        

时间: 2024-11-05 20:50:21

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

UDP聊天器 服务器版 支持离线消息 支持净网过滤

#服务器端 #========================================================== #导入模块import socketimport threadingimport re#设置全局变量flagflag = 0#设置离线消息列表msg_list = []#创建udp套接字udp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)#绑定ip端口udp_server_socke

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

将多任务(多线程)引入到udp聊天机器人,可以实现同时发送消息和接收消息 1 import socket 2 import threading 3 4 5 def udp_send(udp_socket,ip,port): 6 while True: 7 try: 8 # 获取发送的信息 9 data = input('请输入要发送的信息:') 10 udp_socket.sendto(data.encode('gbk'), (ip,port)) 11 12 except Exception a

java UDP聊天与文件传输

package rgy.com.UDP3; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.io.Fil

分享一个近期写的简单版的网页采集器

分享一个近期写的简单版的网页采集器 功能特点: 1.可通过配置,保存采集规则. 2.可通过采集规则,进行数据采集. 3.可分页,分关键字,进行采集. 4.可保存数据至数据库,文本中. ........... 功能还比较简单,喜欢深入的可以继续深入下去,暂时还没有登录的功能,因为登录功能涉及到的范围比较广,待日后慢慢研究后再开发. 我先上个图让大家一睹为快吧: 首先看看页面,我们要采集这个网站的文章 接下来,首先是查找分页,获得分页里面的文章链接,接着查找内容页需要采集的字段,生成规则,进行采集.

Java实现简单版SVM

最近的图像分类工作要用到latent svm,为了更加深入了解svm,自己动手实现一个简单版的. 之所以说是简单版,因为没有用到拉格朗日,对偶,核函数等等.而是用最简单的梯度下降法求解.其中的数学原理我参考了http://blog.csdn.net/lifeitengup/article/details/10951655,文中是用matlab实现的svm. 源代码和数据集下载:https://github.com/linger2012/simpleSvm 其中数据集来自于libsvm,我找了其中

MFC抓取网页代码简单版。

最近又在网上找了一些有关MFC抓取网页代码的文章看,发现有个比较简单的代码,和大家分享下. CInternetSession session(NULL, 0); CHttpFile* htmlFile = NULL; CString strLine, strHtml; CString url = _T("http://www.tqyb.com.cn/data/gzWeather/gz_weatherForecastInDays.js?"); TCHAR sRecv[1024]; UIN

luogu P3808 【模板】AC自动机(简单版)

二次联通门 : luogu P3808 [模板]AC自动机(简单版) /* luogu P3808 [模板]AC自动机(简单版) 手速越来越快了 10分钟一个AC自动机 一遍过编译 + 一边AC 感觉不错 我也就做做板子题了.. */ #include <iostream> #include <cstring> #include <cstdio> #include <queue> #define Max 1000009 void read (int &

python3实现UDP协议的简单服务器和客户端

利用python中的socket模块中的来实现UDP协议,这里写一个简单的服务器和客户端.为了说明网络编程中UDP的应用,这里就不写图形化了,在两台电脑上分别打开UDP的客户端和服务端就可以了. UDP:用户数据报协议,是一个面向无连接的协议.采用该协议不需要两个应用程序先建立连接.UDP协议不提供差错恢复,不能提供数据重传,因此该协议传输数据安全性差. 客户端 python3只能收发二进制数据,需要显式转码 from socket import * host = '192.168.48.128

聊天机器人改写版

/*改写的聊天机器人之华山论剑,写着玩儿的,还很粗劣,有待完善*/ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class sword { static void Main(string[] args) { int fullBlood = 10; while (true) { Console.WriteLi

简单版猜拳游戏

界面很简单 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84