Winsock程式設計初步之<三> 源程式例項(2) (轉)
//A simplest client
//Written by Shen zhiliang for learning Winsock & HTTP
//zhiliang@sina.com
//1998.7.29
#include "winsock.h"
#include "stdio.h"
#define BUFLEN 4096
void SocketError(char * call)
{
fprintf(stderr," WinSock Error# function: %s, error code:%ldn",call,WSAGetLastError());
}
main(int argc,char ** argv)
{
int iRes,iPort,iTmp;
SOCKET s,rs;
SOCKADDR_IN sin,rsin;
WSADATA wsad;
wVersionReq;
char recvBuf[BUFLEN];
if(argc<4)
{
fprintf(stderr,"Usage: sockserver port messagen");
return -1;
}
if(_addr(argv[1])==INADDR_NONE)
{
fprintf(stderr,"Error ip gavingn");
return -1;
}
iPort=0;
iPort=atoi(argv[2]);
sin.sin_addr.s_addr=inet_addr(argv[1]);
sin.sin_family=PF_INET;
sin.sin_port=htons(iPort);
if(iPort<=0)
{
fprintf(stderr,"must specify a number for portn");
return -1;
}
wVersionReq=MAKEWORD(1,1);
iRes=Wtartup(wVersionReq,&wsad);
if(iRes!=0)
{
SocketError("WSAStartup()");
return -1;
}
s=socket(PF_INET,SOCK_STREAM,0);
if(s==INVALID_SOCKET)
{
SocketError("socket()");
return -1;
}
iTmp=sizeof(sin);
fprintf(stderr,"WinSock Client Start......n");
if(connect(s,(LPSOCKADDR)&sin,iTmp)==SOCKET_ERROR)
{
SocketError("connect()");
closesocket(s);
WSACleanup();
return -1;
}
strcpy(recvBuf,argv[3]);
strcat(recvBuf,"rnrn");
iRes=send(s,recvBuf,strlen(recvBuf),0);
if(iRes==SOCKET_ERROR)
{
SocketError("send()");
closesocket(s);
WSACleanup();
return -1;
}
printf("Sent Data:n------------------n%sn------------------n",recvBuf);
FILE * fp=fopen("send.dat","a+b");
if(fp==NULL)
return -1;
iRes=recv(s,recvBuf,BUFLEN,0);
while(iRes!=SOCKET_ERROR&&iRes!=0)
{
printf("Received Data:n------------------n%sn------------------n",recvBuf);
fwrite(recvBuf,sizeof(char),iRes,fp);
iRes=recv(s,recvBuf,BUFLEN,0);
}
fclose(fp);
closesocket(s);
WSACleanup();
return 0;
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1001893/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Winsock程式設計初步之<二> 源程式例項(一) (轉)程式設計
- Winsock程式設計初步之<一> Winsock程式設計原理 (轉)程式設計
- Winsock程式設計框架 (轉)程式設計框架
- XML程式設計例項(二) (轉)XML程式設計
- Delphi趣味程式設計例項三則程式設計
- WinSock2程式設計之打造完整的SOCKET池程式設計
- DirectX 7 程式設計初步 (轉)程式設計
- linux socket程式設計初步(2)Linux程式設計
- TCP/IP Winsock程式設計要點(轉)TCP程式設計
- MapReduce程式設計例項之倒排索引 1程式設計索引
- MapReduce程式設計例項之自定義排序程式設計排序
- MapReduce程式設計例項之資料去重程式設計
- MapReduce程式設計例項之自定義分割槽程式設計
- Jmeter beanshell程式設計例項JMeterBean程式設計
- 設計模式例項程式碼設計模式
- KafKa Java程式設計例項KafkaJava程式設計
- linux下bluetooth程式設計(六)L2CAP層程式設計例項Linux程式設計
- Android感測器程式設計帶例項(轉)Android程式設計
- Shell程式設計入門例項程式設計
- Qt 中Socket程式設計例項QT程式設計
- android socket程式設計例項Android程式設計
- The MySQL C API程式設計例項MySqlAPI程式設計
- Java&CORBA程式設計例項JavaORB程式設計
- corba程式設計簡單例項ORB程式設計單例
- Java XML程式設計例項解析JavaXML程式設計
- Java遊戲程式設計初步Java遊戲程式設計
- Win2K下關聯程式/埠之程式碼初步分析(轉)
- 多國語言程式設計之資源轉換 (轉)程式設計
- [C++]C++程式設計例項C++程式設計
- shell程式設計例項--實現累加程式設計
- 【Akka】Akka入門程式設計例項程式設計
- 《bash shell指令碼程式設計經典例項(第2版)》資源連結清單指令碼程式設計
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- 程式設計資源收集(轉)程式設計
- 多程式程式設計函式posix_spawn例項程式設計函式
- [轉]BDB例項程式碼
- 淺談Delpih中的windowsAPI程式設計初步(1)(轉)WindowsAPI程式設計
- c# winform程式設計轉例C#ORM程式設計