c++Socket
来源:互联网 发布:电动摩托车淘宝网 编辑:程序博客网 时间:2024/05/21 09:13
2
#include
3
套接字。
SOCKET RecvSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
第一个参数决定IPv4,V6等,AF_INET是V4。
SOCK_DGRAM用于UDP,SOCK_STREAM用于TCP。
第三个参数是协议。
4
地址格式。
sockaddr_in RecvAddr;
RecvAddr.sin_family = AF_INET;
RecvAddr.sin_port = htons(Port);
RecvAddr.sin_addr.s_addr = htonl(INADDR_ANY);
5
int iResult = 0;
WSADATA wsaData;
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
第一个参数,说明版本是2.2。第二个参数,接受winsock实例的细节。
6
bind(RecvSocket, (SOCKADDR *) & RecvAddr, sizeof (RecvAddr));
第一个参数是要绑定的socket。
第二个绑定的地址
第三个地址的长度
7
recvfrom(RecvSocket,RecvBuf, BufLen, 0, (SOCKADDR *) & SenderAddr, &SenderAddrSize);
一.套接字
二.Char* 要接收的字符串
三.Char[100] 则为100
四.……
五.传进来空指针即可。执行后,指针被赋值为发来数据源的细节。
六.地址的长度
8
sendto(SendSocket,SendBuf, BufLen, 0, (SOCKADDR *) & RecvAddr, sizeof (RecvAddr));
一.套接字
二.Char* 要发送的字符串
三.同上
四.……
五.要发送的地址
六.地址的长度。
9
closesocket(SendSocket);
WSACleanup();
server代码:
#include
#include
#include
#include
#include
// Link with ws2_32.lib
#pragma comment(lib, "Ws2_32.lib")
usingnamespace std;
intmain()
{
intiResult = 0;
WSADATA wsaData;
SOCKET RecvSocket;
sockaddr_in RecvAddr;
charRecvBuf[1024];
intBufLen = 1024;
sockaddr_in SenderAddr;
intSenderAddrSize = sizeof (SenderAddr);
WSAStartup(MAKEWORD(2, 2), &wsaData);
RecvSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
RecvAddr.sin_family = AF_INET;
RecvAddr.sin_port = htons(8000);
RecvAddr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(RecvSocket, (SOCKADDR *) & RecvAddr,sizeof (RecvAddr));
wprintf(L"Server is starting...n");
while(true)
{
recvfrom(RecvSocket,
RecvBuf, BufLen, 0, (SOCKADDR *) & SenderAddr, &SenderAddrSize);
printf("%s said: %sn",inet_ntoa(SenderAddr.sin_addr),RecvBuf);
charTimeBuf[1024];
SYSTEMTIME sys;
GetLocalTime( &sys );
sprintf(TimeBuf,"M/d/d d:d:d.d 星期n",sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute, sys.wSecond,sys.wMilliseconds,sys.wDayOfWeek);
sendto(RecvSocket,TimeBuf, BufLen, 0, (SOCKADDR *) & SenderAddr,sizeof (SenderAddr));
}
closesocket(RecvSocket);
//-----------------------------------------------
// Clean up and exit.
wprintf(L"Exiting.n");
WSACleanup();
return0;
}
client代码:
#include
#include
#include
#pragma comment(lib, "Ws2_32.lib")
intmain()
{
WSADATA wsaData;
SOCKET ClientSocket = INVALID_SOCKET;
sockaddr_in ClientAddr;
charSendBuf[1024];
charRecvBuf[1024];
intBufLen = 1024;
WSAStartup(MAKEWORD(2, 2), &wsaData);
ClientSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
ClientAddr.sin_family = AF_INET;
ClientAddr.sin_port = htons(6000);
ClientAddr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(ClientSocket, (SOCKADDR *) & ClientAddr,sizeof (ClientAddr));
//---------------------------------------------------------------------------绑定
strcpy(SendBuf,"I want the time. ");
wprintf(L"Sending a datagram to the receiver...n");
sockaddr_in ServerAddr;
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(8000);
ServerAddr.sin_addr.s_addr = inet_addr("192.168.1.100");
sendto(ClientSocket,SendBuf, BufLen, 0, (SOCKADDR *) & ServerAddr,sizeof (ServerAddr));
//----------------------------------------------------------------------------发送
sockaddr_in SenderAddr;
intSenderAddrSize=sizeof(SenderAddr);
recvfrom(ClientSocket,RecvBuf, BufLen, 0, (SOCKADDR *) & SenderAddr, &SenderAddrSize);
printf("%s said: %sn",inet_ntoa(SenderAddr.sin_addr),RecvBuf);
system("pause");
wprintf(L"Finished sending. Closing socket.n");
closesocket(ClientSocket);
wprintf(L"Exiting.n");
WSACleanup();
return0;
}
- C#Socket
- C#socket
- C#.Socket
- socket.c
- c socket
- C#socket
- C socket
- c++Socket
- C++Socket
- c#Socket
- socket/net/socket.c 摘录
- C#socket编程
- Linux-C-Socket编程
- Linux-C-Socket编程
- C#Socket编程
- c#,socket,data boundary,
- C#Socket编程
- c#socket编程基础
- 绘制基本图形
- Java NIO框架Netty教程(二) – 白话概念
- const与define的异同
- [Unity3D]Unity3D游戏开发之仿仙剑奇侠传仙灵岛机关的实现
- 搬寝室 hdu
- c++Socket
- Java NIO框架Netty教程(三) – Object对象传递
- MCF52259 PIT中断
- C# 的三种序列化方法
- iOS7下隐藏status bar的详细研究
- Java NIO框架Netty教程(四) – ServerBootStrap启动流程源码分析
- 学习C语言-4/18/2014
- Semantic Web 语义化web
- 玩转CSS Counter