Socket阻塞通信
server.cpp
#include
#include
#pragma comment(lib,"WS2_32.lib")
void main()
{
WSADATA wsd;
SOCKET server; //服務(wù)器socket
SOCKADDR_IN addrSrv;
char sendBuf[100];
char recvBuf[100];
SOCKADDR_IN addrClient;
SOCKET client; //連接的客戶端socket
int len;
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
printf("start up failed!\n");
return ;
}
server=socket(AF_INET,SOCK_STREAM,0); //創(chuàng)建socket
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); //設(shè)置地址
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000); //設(shè)置端口號
bind(server,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //綁定
listen(server,5); //設(shè)置最多連接數(shù)
len=sizeof(SOCKADDR);
while(1)
{
client=accept(server,(SOCKADDR*)&addrClient,&len); //接收客戶端連接
sprintf(sendBuf,"Welcome %s ",
inet_ntoa(addrClient.sin_addr));
send(client,sendBuf,strlen(sendBuf)+1,0); //發(fā)送信息客戶端
recv(client,recvBuf,100,0); //接收客戶端數(shù)據(jù)
printf("%s\n",recvBuf);
closesocket(client);
}
closesocket(client); //關(guān)閉連接
WSACleanup();
}
client.cpp
#include
#include
#pragma comment(lib,"WS2_32.lib")
void main()
{
int call = 0;
int result = 0;
while(1)
{
printf("\n\n請輸入命令:\n");
printf("\t1:發(fā)起連接\n");
printf("\t2:發(fā)送數(shù)據(jù)\n");
printf("\t3:關(guān)閉連接\n");
printf("\t4:重新連接\n");
printf("\t0:關(guān)閉程序\n");
scanf("%d",&call);
try{
switch(call)
{
case 1:
printf("發(fā)起連接\n");
WSADATA wsd;
SOCKET sockClient; //客戶端socket
SOCKADDR_IN addrSrv;
char recvBuf[100];
char sendbuf[100];
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
printf("start up failed!\n");
return ;
}
sockClient=socket(AF_INET,SOCK_STREAM,0); //創(chuàng)建socket
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //連接服務(wù)器端
recv(sockClient,recvBuf,100,0); //接收服務(wù)器端數(shù)據(jù)
printf("%s\n",recvBuf);
break;
case 2:
printf("請輸入要發(fā)送的文字\n");
scanf("%s",&sendbuf);
printf("%s\n",sendbuf);
result = send(sockClient,sendbuf,50,0); //向服務(wù)器端發(fā)送數(shù)據(jù)
printf("操作結(jié)果:%d\n",result);
break;
case 3:
result = closesocket(sockClient);
printf("操作結(jié)果:%d\n",result);//關(guān)閉連接
WSACleanup();
printf("連接已經(jīng)關(guān)閉\n");
break;
case 4:
printf("重新連接\n");//此處功能暫未實現(xiàn)
break;
case 0:
return;
default:
break;
}
}catch(Exception e)
{
}
}
}
posted on 2014-03-25 22:45 聽風(fēng) 閱讀(148) 評論(0) 編輯 收藏 所屬分類: C++