The UNIX and Linux Forums  
Helloやアメリカ合衆国へようこそ! UNIXおよびLinuxフォーラム!訪問し、当社のグローバルコミュニティに参加いただきありがとうございます。

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > 高レベルのプログラミング
Googleのunix.com



高レベルのプログラミング は、 C 、 C + +についての質問の投稿は、 Java 、 SQL 、および他のプログラミング言語です。

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
サーバークライアントプログラム pip3r 高レベルのプログラミング 9 2008年4月17日 01:15午前
クライアントとサーバーのプログラムの世代のMakefileで wongalan48 高レベルのプログラミング 0 2007年3月5日 01:09午後
チャットクライアントサーバープログラム powermind 高レベルのプログラミング 1 2006年9月4日 11:19午前
プログラムをクライアントマシンからサーバーにファイルを転送する nathgopi214 高レベルのプログラミング 3 2006年7月4日 06:16午前
私は、 UDPのクライアントプログラムを受信する Nirmala IPネットワーク 1 2005年6月10日 03:46午後

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2006年9月16日
mathu mathu is offline
登録ユーザー
  
 

参加日: 2006年9月
記事: 1
クライアント-サーバープログラム

私はサーフィンのときに新しいnet.thisコードとして私は、この符号化acorsした作品ですperfectly.butこのソケットプログラミング私は小コメントにするか、このソースコードについての説明を引用する必要があります。
下に掲載した私server.ci PRBは理解している
ūみんな、私に役立つことができます!
cheerZ


のserver.c
コード:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/time.h>
#define MAX_CLIENTS 64

struct sockaddr_in servaddr;
int addr_len;
struct sockaddr addr;
struct sockaddr_in *ptr;
int cl_addr_len;
struct sockaddr_in cl_addr;
char in_buf[100], out_buf[100];
char names [10][30];
char message[150];
int num_names = 0;

	typedef struct cl_info
		{
			char cl_id[30];
			int cl_status;
		}cl_info;

	cl_info clients[MAX_CLIENTS];

	int main(int argc, char **argv)
		{
			int newsockfd;
			int sockfd;
			int nbytes;
			int max_fd;
			int fd;
			short func_num;

			fd_set test_set, ready_set;



	sockfd = socket(AF_INET, SOCK_STREAM, 0); 
	servaddr.sin_family - AF_INET;
	servaddr.sin_port = 0;				 /*choose an unused port at random */
	servaddr.sin_addr.s_addr = INADDR_ANY;	 	/* auto fill with my IP address */
	bind(sockfd,(struct sockaddr*) &servaddr, sizeof(servaddr));

	addr_len = sizeof(addr);
	getsockname(sockfd, &addr, &addr_len);
	ptr = (struct sockaddr_in *)&addr;
	printf("\nServer on port# %d\n", ptr->sin_port);

	listen(sockfd, 5);
	max_fd = sockfd; 
	FD_ZERO(&test_set); /*clear the listening socket */

	FD_SET(sockfd, &test_set);

	

	while(1)
		{
			memcpy(&ready_set, &test_set, sizeof(test_set));
			select(max_fd+1, &ready_set, NULL, NULL, NULL);
			
			if(FD_ISSET(sockfd, &ready_set)) /*if listening sock has data its a call from new client */
				{
					/*create a new socket */

					cl_addr_len = sizeof(cl_addr);
					newsockfd = accept(sockfd, (struct sockaddr *)&cl_addr, &cl_addr_len);

					printf("\nA new connection has been made to socket %d\n", newsockfd);
					FD_SET(newsockfd, &test_set); /* add new socket to list */
					if(newsockfd > max_fd)
						max_fd = newsockfd; /*update max_fd with new socket file discriptor */
				} /*end if*/


			for(fd=0; fd <= max_fd; fd++) /*loop through connected socket file discriptors */
{
if((fd !=sockfd) && FD_ISSET(fd, &ready_set))/*bypass listening sock if sock has data*/
if(process_call(fd, max_fd) == 0) /*if socket is closed */
{
printf("\nThe listening socket is now closed\n");
close(newsockfd);
printf("\nClient on socket %d has left the room\n", sockfd);
FD_CLR(fd, &test_set); /*remove socket from list */
/*decrement user count */
} /*end if */
} /* end for loop */
} /*end while loop */
return 0;
} /*end main */
int add_name(int sockfd)
{
int nbytes;
short name_len;
short n_name_len;

printf("\nAdding name .....\n");
nbytes = read(sockfd, (char *)&name_len, sizeof(short));
name_len = ntohs(name_len); /*convert name_len from network to host short */
memset(clients[sockfd].cl_id, 0, 30); /*set all bytes to zero */
nbytes = read(sockfd, clients[sockfd].cl_id, name_len);
num_names ++; /*increment user count */
printf("\n%s has joined the chat room\n", clients[sockfd].cl_id);

/*need to broadcast user has joined plus user id to connected clients here */

} /*end add_name function */
int how_many(int sockfd, int max)
{
int sock;
short user_len;
char username[30];

for(sock = 4; sock <= max; sock++)
{
strcpy(username, clients[sock].cl_id);

user_len = htons(strlen(username));
write(sockfd, (char *)&user_len, sizeof(short));
write(sockfd, username, strlen(username));
send_user_list(sockfd, username);
}
} /*end how_many function */
int send_user_list(int sockfd, char *users)
{
short msg_type;
short user_len;

msg_type = htons(2);
printf("msg_type is : %u\n", msg_type);
write(sockfd, &msg_type, sizeof(short));

user_len = htons(strlen(users));
write(sockfd, (char *)&user_len, sizeof(short));
write(sockfd, users, strlen(users));
}
int find_name(int sockfd, int max)
{
char search_name[30];
int sock;
int found = 0;
short len, name_len;
char sender[30];
short sender_len;
char msg[150];
short msg_len;

memset(search_name, 0, 30); /*set all bytes to zero */
printf("\nReceiving userid......\n");
read(sockfd, (char *)&name_len, sizeof(short));
len = ntohs(name_len);
read(sockfd, search_name, len);
read(sockfd, &msg_len, sizeof(short));
msg_len = ntohs(msg_len);
read(sockfd, msg, msg_len);
msg[msg_len] = '\0';

strcpy(sender, clients[sockfd].cl_id);

for(sock = 4; sock <= max; sock++)
{
printf(" %d is held in max\n", max);
printf("\ncomparing search request for %s with %s username\n",
search_name, clients[sock].cl_id);
if(strcmp(search_name, clients[sock].cl_id) ==0)
{
printf("\nuserid found\n");
found = 1;
send_async_msg(sock, msg,sender);
}/*end if */
} /*end for loop */

if(! found)
{
printf("\nuserid not found\n");
} /*end if */
}/*end find_name function */
int process_call(int newsockfd, int max_fd)
{
int nbytes;
short func_num;

nbytes = read(newsockfd, (char *)&func_num, sizeof(short));
if(nbytes ==0)
return 0;
if (nbytes != sizeof(short))
{
perror("\nUnknown menu option!\n");
exit(1);
} /* end if */

func_num = ntohs(func_num);
switch(func_num)
{
case(1):
add_name(newsockfd);
break;
case(2):
how_many(newsockfd, max_fd);
break;
case(3):
find_name(newsockfd, max_fd);
break;
case(4):
send_global_msg(newsockfd, max_fd);
break;
case(5):
printf("\nShutting down Server...\n");
exit(0);
default:
printf("\nUnknown function number!\n");
break;
} /*end switch */
} /*end process_call function */
int send_async_msg(int sockfd, char * msg, char *sender)
{
short msg_type;
short msg_len;
short sender_len;

msg_type = htons(1);
printf("msg_type is : %u\n", msg_type);
write(sockfd, &msg_type, sizeof(short));
msg_len = htons(strlen(msg));
write(sockfd, (char *)&msg_len, sizeof(short));
write(sockfd, msg, strlen(msg));

sender_len = htons(strlen(sender));
write(sockfd, (char *)&sender_len, sizeof(short));
write(sockfd, sender, strlen(sender));
}/* end of send_async_msg function */
int send_global_msg(int sockfd, int max_fd)
{
int nbytes;
int sock;
short len;
short msg_type;
char msg[150];
char sender[30];
short sender_len;

strcpy(sender, clients[sockfd].cl_id);

msg_type = 1;
memset(in_buf, 0, sizeof(in_buf)); /*set all to zero */
nbytes = read(sockfd, &len, sizeof(short));
len = ntohs(len);
read(sockfd, msg, len);
message[len] = '\0';
for(sock = 4; sock <= max_fd; sock++)
{
send_async_msg(sock, msg, sender);
} /*end for loop */
} /* end of send_global_msg function */

編集reborgで最終; 2006年9月16日に 03:51午後..
  #2固定リンク)  
Old 2006年9月16日
matrixmadhan matrixmadhan is offline Forum Advisor  
Technoratiのマスター
  
 

参加日: 2005年3月
場所:Bのリーフノード+木
投稿数:2953
がされていたので、ネットワークプログラミング初心者のため、多くの記事を

1つのようです nをbeejガイド/ワットprg

より多くのためのフォーラムを検索することができます
  #3固定リンク)  
Old 2006年9月16日
Sharmin Sharmin is offline
登録ユーザー
  
 

参加日: 2006年9月
投稿数: 6
私の記事を読む

引用:
当初の投稿 matrixmadhan
がされていたので、ネットワークプログラミング初心者のため、多くの記事を

1つのようです nをbeejガイド/ワットprg

より多くのためのフォーラムを検索することができます
私の質問に回答してくれますが、 2時間前投稿してくださいします。

ありがとうございました。
  #4固定リンク)  
Old 2006年9月17日
matrixmadhan matrixmadhan is offline Forum Advisor  
Technoratiのマスター
  
 

参加日: 2005年3月
場所:Bのリーフノード+木
投稿数:2953
ポストは何を指しているとは?
は、他のスレッドから? ? ?
  #5固定リンク)  
Old 2006年9月17日
Sharmin Sharmin is offline
登録ユーザー
  
 

参加日: 2006年9月
投稿数: 6
こんにちは

引用:
当初の投稿 matrixmadhan
ポストは何を指しているとは?
は、他のスレッドから? ? ?

こんにちは、

ありがとうございました。あなたが私のすべての状態をプリントアウトし、その後の文字列の抽出について回答した。私は、誰もそれを見たと思った。

将来的には、私は長い間、再度求める前に待機します。私の質問方法を持つファイルからsscanf ( )をプリントアウトして、特定の文字列を抽出することでした。

私は答えを得た。しかし、今かどうかは、ファイルから1つ以上の行から1つ以上の文字列を抽出することが可能ですか。と言う、私たちは、ファイルがある

はcat / proc / cpuinfo

プロセッサ: 0
vendor_id : GenuineIntel
CPUのファミリ: 15
モデル: 2
モデル名:インテル( R ) Celeronは(共和党)のCPU 2.60GHz

ステップ: 9
MHzのCPUを: 2591.654
キャッシュサイズ: 128キロバイト
fdiv_bug :いいえ
hlt_bug :いいえ
f00f_bug :いいえ
coma_bug :いいえ
FPUを:はい
fpu_exception :はい
CPUIDをレベル: 2
wp :はい
フラグ: FPUをのVMEデpse

と私を抽出したい

vendor_id : GenuineIntel
モデル: 2
モデル名:インテル( R ) Celeronは(共和党)のCPU 2.60GHz

私は、ここで3つの文字列を抽出しているとして、この場合には3回、次のコードをwrtingが知っている可能性があります。

(はNULL \u003d\u003d ( fp \u003d fopen ( argv [ 1 ] 、 " rtが"))){場合
printf ( " \ Ñ " %を開くことができない、 argv [ 1 ] ) ;
出口( 1 ) ;

( ; fgets ( buf 、 255 、 fp )
もし( buf \u003d\u003d strstr ( "モデル名" ) ) ( buf
場合( NULLを! \u003d ( pは\u003d strchr ( ':'))) buf
printf ( " % \ Ñ " 、 p + 1 ) ;
休憩;


は、一度のコードを書くことができますが、いくつかの特定の文字列を抽出することができますし、他の後で一度に印刷する方法しかし、です。

また、その方法は、一つのCのように私はコマンドラインの引数は、他の後でmutipleファイルを開くことができるファイルです。例えば、印刷した後、 vendor_id 、モデルの型とモデル名から行わ午前 cpuinfo に/ procディレクトリからファイルを、私はオープン 合計 は/ procディレクトリからファイルをいくつかの特定の文字列を抽出し、印刷を開始してから、もう一度。ですが、非常に多くの単純な方法compilcated 。どうか知っている方法を知ってる場合にしましょう。

また、私たちは、文字列を抽出し、家族と言うのCPU : 15 、 15種類の文字列です。言おうと、私は15の文字列を整数に変換するので、私は使用atoi ( ) 、しかし、私は次の権利を持っているかを印刷するか?

INTは番号\u003d atoi ( p )を;
printf ( "整数値: % d個の\ Ñ " 、番号) ;

しかし、私は、整数値を印刷することはできません。だから、私が何か行方不明だと思う。

は私の助けを得ることができる、とても感謝されます。
ありがとうございました。
Closed Thread

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 04:44午後


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0