返回信息流Server:
#include <stdio.h>#include <stdlib.h>#include <winsock2.h>#include <time.h>#include <string>#include <iostream>#include <fstream>#include <iomanip>using namespace std;#pragma comment(lib,"Ws2_32.lib")
int main(int argc,char ** argv) { WSADATA wsaData;
char recvbuf[100]; int iRecv,Lenclient; SOCKADDR_IN serverName, clientName; SOCKET socketServer;
char ipadd[16]; strcpy(ipadd,"127.0.0.1"); WSAStartup(MAKEWORD(2,2), &wsaData); //初始化ws2_32.dll动态链接库
socketServer = socket(AF_INET, SOCK_DGRAM, 0);
serverName.sin_family = AF_INET; serverName.sin_port = htons(6666); serverName.sin_addr.s_addr = inet_addr(ipadd);
bind(socketServer, (SOCKADDR*)&serverName, sizeof(serverName)); memset(recvbuf,0,sizeof(100)); while(1) { printf("In\n"); Lenclient = sizeof(serverName); iRecv = recvfrom(socketServer, recvbuf, sizeof(recvbuf), 0, (SOCKADDR*)&serverName, &Lenclient); if (iRecv != SOCKET_ERROR) { printf("%s\n",recvbuf); memset(recvbuf,0,sizeof(100)); } } return 0;}
Client:
#include <stdio.h>#include <stdlib.h>#include <winsock2.h>#include <time.h>#include <string>#include <iostream>#include <fstream>#include <iomanip>using namespace std;#pragma comment(lib,"Ws2_32.lib")
int main(int argc,char ** argv) {
WSADATA wsaData;
char sendbuf[100]; int iSend,Lenclient; char ipadd[16];
strcpy(ipadd,"10.110.5.182"); SOCKADDR_IN clientName; SOCKET socketClient;
WSAStartup(MAKEWORD(2,2), &wsaData); //初始化ws2_32.dll动态链接库
socketClient = socket(AF_INET, SOCK_DGRAM, 0);
clientName.sin_family = AF_INET; clientName.sin_port = htons(6666); clientName.sin_addr.s_addr = inet_addr(ipadd);
bind(socketClient, (SOCKADDR*)&clientName, sizeof(clientName)); memset(sendbuf,0,sizeof(100)); while(1) { gets(sendbuf); printf("本次要发送数据是:%s\n",sendbuf); iSend = sendto(socketClient, sendbuf, sizeof(sendbuf), 0, (SOCKADDR*)&clientName, sizeof(clientName)); if (iSend != SOCKET_ERROR) { printf("本次发送数据成功:%s\n",sendbuf); memset(sendbuf,0,sizeof(100)); } else { cout<<WSAGetLastError()<<endl; } } return 0;}
这是一条镜像帖。来源:北邮人论坛 / cpp / #73500同步于 2013/8/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求大神指点socket
zhangliyuan
2013/8/29镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
【 在 zhangliyuan 的大作中提到: 】
: Server:
: #include <stdio.h>#include <stdlib.h>#include <winsock2.h>#include <time.h>#include <string>#include <iostream>#include <fstream>#include <iomanip>using namespace std;#pragma comment(lib,"Ws2_32.lib")
: int main(int argc,char ** argv) { WSADATA wsaData;
: ...................
重新发:
Server:
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <time.h>
#include <string>
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
#pragma comment(lib,"Ws2_32.lib")
int main(int argc,char ** argv)
{
WSADATA wsaData;
char recvbuf[100];
int iRecv,Lenclient;
SOCKADDR_IN serverName, clientName;
SOCKET socketServer;
char ipadd[16];
strcpy(ipadd,"127.0.0.1");
WSAStartup(MAKEWORD(2,2), &wsaData); //初始化ws2_32.dll动态链接库
socketServer = socket(AF_INET, SOCK_DGRAM, 0);
serverName.sin_family = AF_INET;
serverName.sin_port = htons(6666);
serverName.sin_addr.s_addr = inet_addr(ipadd);
bind(socketServer, (SOCKADDR*)&serverName, sizeof(serverName));
memset(recvbuf,0,sizeof(100));
while(1)
{
printf("In\n");
Lenclient = sizeof(serverName);
iRecv = recvfrom(socketServer, recvbuf, sizeof(recvbuf), 0, (SOCKADDR*)&serverName, &Lenclient);
if (iRecv != SOCKET_ERROR) {
printf("%s\n",recvbuf);
memset(recvbuf,0,sizeof(100));
}
}
return 0;
}
Client:
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <time.h>
#include <string>
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
#pragma comment(lib,"Ws2_32.lib")
int main(int argc,char ** argv)
{
WSADATA wsaData;
char sendbuf[100];
int iSend,Lenclient;
char ipadd[16];
strcpy(ipadd,"10.110.5.182");
SOCKADDR_IN clientName;
SOCKET socketClient;
WSAStartup(MAKEWORD(2,2), &wsaData); //初始化ws2_32.dll动态链接库
socketClient = socket(AF_INET, SOCK_DGRAM, 0);
clientName.sin_family = AF_INET;
clientName.sin_port = htons(6666);
clientName.sin_addr.s_addr = inet_addr(ipadd);
bind(socketClient, (SOCKADDR*)&clientName, sizeof(clientName));
memset(sendbuf,0,sizeof(100));
while(1)
{
gets(sendbuf);
printf("本次要发送数据是:%s\n",sendbuf);
iSend = sendto(socketClient, sendbuf, sizeof(sendbuf), 0, (SOCKADDR*)&clientName, sizeof(clientName));
if (iSend != SOCKET_ERROR) {
printf("本次发送数据成功:%s\n",sendbuf);
memset(sendbuf,0,sizeof(100));
}
else
{
cout<<WSAGetLastError()<<endl;
}
}
return 0;
}
【 在 zhangliyuan 的大作中提到: 】
:
: 重新发:
: Server:
: ...................
我的ip是10.110.5.182
服务器端不用指明ip吧,单机测试的话,客户端应该连接127.0.0.1。
【 在 zhangliyuan 的大作中提到: 】
:
: 我的ip是10.110.5.182
【 在 yangnick 的大作中提到: 】
: 服务器端不用指明ip吧,单机测试的话,客户端应该连接127.0.0.1。
你的意思是服务器端的socket不用和一组ip端口绑定?大神?