udp编程Java语言应用中实现UDP协议编程的方法?
udp编程 时间:2021-08-30 阅读:(
)
CSocket之UDP编程
#include <stdio.h>
#include <Winsock2.h>
#ment(lib,"ws2_32.lib")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1);
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
}
SOCKET sersocket=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN seraddr;
seraddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
seraddr.sin_family=AF_INET;
seraddr.sin_port=htons(5000);
bind(sersocket,(SOCKADDR*)&seraddr,sizeof(SOCKADDR));
SOCKADDR clientaddr;
int len=sizeof(SOCKADDR);
char revbuf[100];
char sendbuf[100];
recvfrom(sersocket,revbuf,100,0,(SOCKADDR*)&clientaddr,&len);
printf("%s
",revbuf);
scanf("%s",&sendbuf);
sendto(sersocket,sendbuf,strlen(sendbuf)+1,0,(SOCKADDR*)&clientaddr,len);
closesocket(sersocket);
WSACleanup();
}
#include <stdio.h>
#include <Winsock2.h>
#ment(lib,"ws2_32.lib")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1);
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
}
SOCKET sockclient=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN clientaddr;
clientaddr.sin_addr.S_un.S_addr=_addr("127.0.0.1");
clientaddr.sin_family=AF_INET;
clientaddr.sin_port=htons(5000);
int len=sizeof(SOCKADDR);
char revbuf[100];
char sendbuf[100];
printf("请输入内容:
");
while(1)
{
scanf("%s",&sendbuf);
sendto(sockclient,sendbuf,strlen(sendbuf)+1,0,(SOCKADDR*)&clientaddr,len);
recvfrom(sockclient,revbuf,100,0,(SOCKADDR*)&clientaddr,&len);
printf("%s
",revbuf);
}
closesocket(sockclient);
WSACleanup();
}
大同小异,CSocket只是进行了封装而已,原理是一样的,编程要思路灵活才行。
在MFC中的UDP程序怎么编写用CAsyncSocket或者CSocket?
呵呵整一个SOCKET盲
还一上来就要用封装好的MFC类,哀分少啊,帮你说说吧
建立一个新类从CAsyncSocket public 派生来,叫 MySock,然后在CXXXDlg的头文件加个变量 MySock m_socket; 然后 CXXXDlg中的INITDIALOG初始化, m_socket.Create(0,SOCK_DGRAM); 使用UDP恩首先你要考虑到服务器端也是使用UDP的协议的,然后就可以调用 m_socket.SendTo(buffer,strlen(buffer),3333,"xxx.xxx.xxx.xxx");
3333是服务器等待接收数据的端口,XXX.XXX.XXX.XXX 是服务器的IP,恩域名也可以...如果服务器是TCP的话要用Connect连接然后用Send方法发送数据,使用完调用close关闭SOCKET,也疴可以不关,类销毁时会自动释放所使用资源,恩至于要等待接收数据,UDP需要BIND,可以在CREATE的时候就绑定上,而TCP不光要绑定上还要listen监听,TCP有连接来后要用ept接收连接,给它一个新的 CAsyncSocket,呵呵就说这么点,对了在BOOL CXXXApp::InitInstance()的初始化函数中添加
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
还有头文件 #include <afxsock.h> // MFC socket extensions .或者你在创建工程时选择上WINSOCKET,
恩对了CSocket是堵塞的套接字,需要同步很强的工作再选择他,一般使用异步的,给分!TCP 和 UDP 在socket编程中的区别
一、TCP与UDP的区别
基于连接与无连接
对系统资源的要求(TCP较多,UDP少)
UDP程序结构较简单
流模式与数据报模式
TCP保证数据正确性,UDP可能丢包
TCP保证数据顺序,UDP不保证
部分满足以下几点要求时,应该采用UDP 面向数据报方式 网络数据大多为短消息
拥有大量Client
对数据安全性无特殊要求
网络负担非常重,但对响应速度要求高
具体编程时的区别 socket()的参数不同
UDP Server不需要调用listen和ept
UDP收发数据用sendto/recvfrom函数
TCP:地址信息在connect/ept时确定
UDP:在sendto/recvfrom函数中每次均 需指定地址信息
UDP:shutdown函数无效急求C语言编写的基于UDP的点对点的聊天程序代码
UDP啊。
。
服务器:
socket(AF_INET, SOCK_DATEGRAM,0);
初始化地址。
bind一下。
然 recv或者 sendto。
客户端:
一样。
socket因为UPD。
直接conect一样。
sendto就行了。
注意 :1.聊天 需要 IO多路复用。
select 或者 poll。
可以实现
2. 群聊。
。
其实就是一个 发送给多个。
。
把IP往出口 轮询就行。
3.添加好用。
登陆?。
这个没界面。
后台把这些存到数据库里。
启动的时候。
seletc出来。
。
你给多少分。
都没人给你写的。
自己百度吧。
。
。
C++的UDP编程,设置广播地址为255.255.255.255,广播不出去
看起来不像是代码有错 而更像这两台机器的设置有问题。
几个问题:
1、从别的机器上发出的广播,这两台机器能收到吗?
2、从这两台机器向255.255.255.255发广播,如果在它们上面运行wireshark,能抓到UDP包吗?
3、这两台机器的网卡没有被设成promiscuous mode吧?
4、把这两台机器的网卡和其他工作的机器的网卡换了看看什么结果?
5、如果你的机器跑windows 7,可以在这两台机器和其他机器上用work and connection center里面自带work map看看各台机器之间是怎样连接的。
Java语言应用中实现UDP协议编程的方法?
//发送端SocketSendFile.java
import java.io.*;
import .*;
public class SocketSendFile {
public static final int SER_PORT=666;
public static final int CLI_PORT=8484;
public static final String SER_IP="192.168.0.35";
public static int bufSize = 1024;
public static byte] mess = new bytebufSize];
//建立Socket引用
public static DatagramSocket dp;
public static void main(String] args) throws Exception {
dp = new DatagramSocket(SER_PORT);
//调用构造函数SocketSendFile,并传递参数args0](所要传输的文件名)
SocketSendFile(args0]);
}
public static void SocketSendFile(String file2) throws Exception {
//定义一个计数器
int pos =0;
//设置写入流
FileInputStream fis = new FileInputStream(file2);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
int i;
do {
i = dis.read();
int j=0;
while (j<1024 & i != -1) {
messpos++] = (byte) i;
i=dis.read();
j++;
}
dp.send(new DatagramPacket(mess,pos,Address.getByName(SER_IP),CLI_PORT));
}
while (i != -1);
fis.close();
}
}
//接收端SocketReceiveFile.java
import .*;
import java.io.*;
public class SocketReceiveFile {
public static int bufSize=1024;
public static byte] mess=new bytebufSize];
public static DatagramSocket dp;
public static final int SER_PORT=8484;
public static void main(String] args) throws Exception {
dp = new DatagramSocket(SER_PORT);
SocketReceiveFile(args0]);
}
public static void SocketReceiveFile(String file1) throws Exception {
FileOutputStream fos = new FileOutputStream(file1);
BufferedOutputStream bos = new BufferedOutputStream(fos);
DataOutputStream dos = new DataOutputStream(bos);
int i;
DatagramPacket p = new DatagramPacket(mess,mess.length);
while(true) {
boolean j=false;
while (p.getData().length != 0) {
dos.write(p.getData());
dp.receive(p);
j=true;
}
// System.out.println(new String(p.getData(),0,p.getLength()));
if (j)
System.out.println("文件传送完毕.");
}
// fos.close();
}
}
艾云怎么样?艾云是一家去年年底成立的国人主机商家,商家主要销售基于KVM虚拟架构的VPS服务,机房目前有美国洛杉矶、圣何塞和英国伦敦,目前商家推出了一些年付特价套餐,性价比非常高,洛杉矶套餐低至85元每年,给500M带宽,可解奈飞,另外圣何塞也有特价机器;1核/1G/20G SSD/3T/2.5Gbps,有需要的朋友以入手。点击进入:艾云官方网站艾云vps促销套餐:KVM虚拟架构,自带20G的防御...
CloudCone商家我们很多喜欢低价便宜VPS主机的肯定是熟悉的,个人不是特别喜欢他。因为我之前测试过几次,开通的机器IP都是不通的,需要删除且开通好几次才能得到一个可用的IP地址。当然他们家的优势也是有的,就是价格确实便宜,而且还支持删除重新开通,而且机房只有一个洛杉矶MC。实话,如果他们家能多几个机房,保持现在的特点,还是有很多市场的。CloudCone是来自美国的主机销售商,成立于2017...
青果网络QG.NET定位为高效多云管理服务商,已拥有工信部颁发的全网云计算/CDN/IDC/ISP/IP-VPN等多项资质,是CNNIC/APNIC联盟的成员之一,2019年荣获国家高薪技术企业、福建省省级高新技术企业双项荣誉。那么青果网络作为国内主流的IDC厂商之一,那么其旗下美国洛杉矶CN2 GIA线路云服务器到底怎么样?官方网站:https://www.qg.net/CPU内存系统盘流量宽带...
udp编程为你推荐
高级工程师证书考一个高级工程师证要什么学历?copying美剧中经常说copy是什么意思网络地址分类网络位置的位置分类监控设备安装监控器怎么安装高级工程师证书查询如何查工程师证混乱模式混乱模式的对应一览免费数据采集软件那个软件可以自动每天采集几十个网站的最新信息,并且发布信息到自己的门户网站上ldap统一用户认证介绍NIPS是什么认证?本地连接断开本地连接老是断开怎么解决mysql数据库迁移如何将MySQL数据库迁移到Oracle数据库
购买域名 播放vps上的视频 免费申请网页 adman themeforest softbank官网 php探针 牛人与腾讯客服对话 嘉洲服务器 权嘉云 创梦 河南移动邮件系统 移动服务器托管 西安主机 免费个人主页 免费php空间 谷歌搜索打不开 SmartAXMT800 中美互联网论坛 globalsign 更多