好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 奋斗丶小Z 于 2015-11-11 18:34 编辑
编程环境:VC++ 6.0
程序运行结果
socket编程
服务端编写:
1,创建套接字
2,将套接字绑定到一个本地端口,并监听。
3,等待接收数据
4,关闭套接字
服务端代码:
//win32 console application
#include<stdio.h>
#include<winsock2.h>
#pragma comment(lib,"ws2_32.lib")
void main()
{
//初始化套接字,加载套接字
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested=MAKEWORD(2,2);
err=WSAStartup(wVersionRequested,&wsaData);
if(err!=0){
return;
}
//创建套接字
SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSrv={0};
addrSrv.sin_family=AF_INET;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_port=htons(1114);
//绑定套接字
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
//字符数组
char recvBuf[100]; //保存接收信息
char sendBuf[100]; //保存发送信息
char tempBuf[200]; //存放中间临时数据
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while(1)
{
//等待并接收数据
recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);
if('q'==recvBuf[0])
{
sendto(sockSrv,"q",strlen("q")+1,0,(SOCKADDR*)&addrClient,len);
printf("chat end!\n");
break;
}
sprintf(tempBuf,"%s say:%s",inet_ntoa(addrClient.sin_addr),recvBuf);
printf("%s\n",tempBuf);
//发送数据
printf("please input data:\n");
gets(sendBuf);
sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrClient,len);
}
//关闭套接字
closesocket(sockSrv);
WSACleanup();
}
客户端编写:
1,创建套接字
2,主动连接服务端
3,发送数据
4,关闭套接字
//win32 console application
#include<stdio.h>
#include<winsock2.h>
#pragma comment(lib,"ws2_32.lib")
void main()
{
//初始化套接字,加载套接字
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested=MAKEWORD(2,2);
err=WSAStartup(wVersionRequested,&wsaData);
if(err!=0){
return;
}
//创建套接字
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv={0};
addrSrv.sin_family=AF_INET;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_port=htons(1114);
//字符数组
char recvBuf[100]; //保存接收信息
char sendBuf[100]; //保存发送信息
char tempBuf[200]; //存放中间临时数据
int len=sizeof(SOCKADDR);
while(1)
{
//发送数据
printf("please input data:\n");
gets(sendBuf);
sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrSrv,len);
//等待并接收数据
recvfrom(sockClient,recvBuf,100,0,(SOCKADDR*)&addrSrv,&len);
if('q'==recvBuf[0])
{
sendto(sockClient,"q",strlen("q")+1,0,(SOCKADDR*)&addrSrv,len);
printf("chat end!\n");
break;
}
sprintf(tempBuf,"%s say:%s",inet_ntoa(addrSrv.sin_addr),recvBuf);
printf("%s\n",tempBuf);
}
//关闭套接字
closesocket(sockClient);
WSACleanup;
}
|
免费评分
-
查看全部评分
|