サーバ側
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <vfw.h> // AVI~関数
#include <time.h> // clock()
#include <process.h>
#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "wsock32.lib") // wsock32.libにリンクをはる
#define LHOST "192.168.24.51"
#define PORT 10000
int main()
{
WSADATA wsaData;
struct sockaddr_in jibun_ad, aite_ad;
SOCKET jibun_sc, aite_sc;
int aite_ad_size = sizeof(aite_ad);
int a, ret;
char buf[32];
fprintf(stderr, "サーバープログラムスタート\n");
//dll初期化
WSAStartup(MAKEWORD(2,0), &wsaData);
//自分のアドレス情報をセット
memset(&jibun_ad, 0, sizeof(struct sockaddr_in));
jibun_ad.sin_addr.s_addr = htonl(INADDR_ANY);
jibun_ad.sin_family = AF_INET;
jibun_ad.sin_port = htons(PORT);
//ソケットの生成(受話器の生成)
jibun_sc = socket(AF_INET, SOCK_STREAM, 0);
//バインド(電話番号登録)
bind(jibun_sc, (struct sockaddr*)&jibun_ad, sizeof(jibun_ad));
//同時接続数は1
listen(jibun_sc, 1);
//接続待ちに入る
memset(&aite_ad, 0, sizeof(struct sockaddr_in));
fprintf(stderr, "accept待ち中です・・・\n");
aite_sc = accept(jibun_sc, (struct sockaddr*)&aite_ad, &aite_ad_size);
if((int)aite_sc < 0){
fprintf(stderr, "accept error\n");
return 0;
}
fprintf(stderr, "accept success.%d\n ip: %s", aite_sc, inet_ntoa(aite_ad.sin_addr));
fprintf(stderr, "please input loop num\n");
fscanf(stdin, "%d", &a);
//整数aを送信
sprintf(buf, "%d", a);
ret = send(aite_sc, buf, sizeof(buf), 0);
if(ret < 1){
fprintf(stderr, "send error\n");
return 0;
}
//クライアントから文字列受信
for(int i=0; i<a; i++){
recv(aite_sc, buf, sizeof(buf), 0);
fprintf(stderr, "%2d[%s]\n", i, buf);
if(ret < 1){
fprintf(stderr, "recv error\n");
return 0;
}
}
WSACleanup();
return 0;
}
クライアント側
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <vfw.h> // AVI~関数
#include <time.h> // clock()
#include <process.h>
#pragma comment(lib, "wsock32.lib") // wsock32.libにリンクをはる
#define PORT 10000
#define LHOST "192.168.24.51"
int main(){
WSADATA wsaData;
SOCKET aite_sc;
struct sockaddr_in aite_ad;
char buf[32];
int ret, a;
fprintf(stderr, "クライアントプログラムスタート\n");
//dll初期化
WSAStartup(MAKEWORD(2,0), &wsaData);
//相手(サーバ)のアドレス情報をセット
memset(&aite_ad, 0, sizeof(struct sockaddr_in));
aite_ad.sin_addr.s_addr = inet_addr(LHOST);
aite_ad.sin_family = AF_INET;
aite_ad.sin_port = htons(PORT);
//接続先のソケット生成
aite_sc = socket(AF_INET, SOCK_STREAM, 0);
//接続(サーバのaccept待ちを解除)
if(connect(aite_sc, (struct sockaddr *) &aite_ad, sizeof(aite_ad))){
printf("%s に接続できませんでした\n",LHOST);
return 0;
}
printf("%s に接続しました\n",LHOST);
//受信
ret = recv(aite_sc, buf, sizeof(buf), 0);
if(ret < 1){
fprintf(stderr, "recv error\n");
return 0;
}
a = atoi(buf);
fprintf(stderr, "%dを受信しました\n", a);
for(int i=0; i<a; i++){
sprintf(buf, "%d", i);
ret = send(aite_sc, buf, sizeof(buf), 0);
if(ret < 1){
fprintf(stderr, "send error\n");
return 0;
}
}
//close
closesocket(aite_sc);
WSACleanup();
return 0;
}
累計のアクセス数: -
今日のアクセス数: -
昨日のアクセス数 -
最終更新:2011年07月25日 20:13