<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title> § knulpk §  </title>
	<link>http://knulpk.egloos.com</link>
	<description>The New Semester~!</description>
	<language>ko</language>
	<pubDate>Wed, 05 Aug 2009 00:32:57 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title> § knulpk §  </title>
		<url>http://pds7.egloos.com/logo/200802/18/27/e0039327.jpg</url>
		<link>http://knulpk.egloos.com</link>
		<width>80</width>
		<height>196</height>
		<description>The New Semester~!</description>
	</image>
  	<item>
		<title><![CDATA[ ANS1890W 에러 ]]> </title>
		<link>http://knulpk.egloos.com/2410280</link>
		<guid>http://knulpk.egloos.com/2410280</guid>
		<description>
			<![CDATA[ 
  <p>백업을 받다가 간혹 아카이브에 나타나는 에러인 ANS1809W 일시적인 장애나 라우터에 문제가 있을때 나타난다고 한다.<br><br>----------------------&lt;&lt;Tivoli의 문서를 번역해 보았습니다. &gt;&gt;----------------------------<br>ANS1809W&nbsp; <br><br>A session with the TSM server has been disconnected. An attempt will be made to reestablish the <br>connection.<br>(TSM 서버와 가 끊기는 세션. 다시한번 연결을 시도할 것이외다.)<br><br>Explanation: (설명을 하자면)<br>This message is issued after the session with the TSM server is unexpectedly lost. <br>(이 메세지는 기대하지 않았던 TSM 서버가 연결이 끊겼을때 문제된단다.)<br>Some possible reasons that this message might be issued: <br>(문제화 되는 이슈들에 대한 가능한 이유는 다음과 같단다.)<br><br>- There is a problem with the network. ( 네트워크에 문제가 있거나)<br>- The TSM server was shut down. (TSM 서버의 셧다운)<br>- The TSM server administrator cancelled the client session.(클라이언트 세션을 어드민이 취소하는경우)</p><p><br>System action: (시스템에서는 그럼 어케 하느냐...??)<br><br>The client will try to reestablish a connection with the server. (클라이언트는 서버와의 접속을 재시도 할것이외다.)<br>If the TSM server administrator cancelled the session, then the attempt to reestablish the connection <br>will fail and message ANS1369E will be issued. <br>(만약에 TSM 서버 어드민이 클라이언트 세션을 취소하였다면, 이러한 실패 메세지를 던져주고-ANS1809W-재접속을 할 거다.)<br><br>If the attempt to reestablish the connection is successful, then processing will continue. <br>( 재접속 시도가 성공되면 프로세싱이 계속 될 것이외다.)<br><br>If the attempt to reestablish the connection fails, then the client will continue to try to reestablish <br>a connection according to the COMMRESTARTDURATION and COMMRESTARTINTERVAL client option settings.<br>(그럼에도 불구하고 재접속 시도가 실패한다면 클라이언트는 옵션세팅인 <br><strong>COMMRESTARTDURATION</strong>{커맨드리스타트듀레이션?의 약자인듯???} <br>과 <br><strong>COMMRESTARTINTERVAL</strong>{커맨드리스타트 인터발??}<br>에 따라서 착하게 계속 시도할 것이란다.)<br><br></p><p>User response:&nbsp; ( 뭐가 문제인지 알고싶으시다면)<br>If the session was cancelled by the TSM server administrator and you do not know why, or <br>if the client is unable to reestablish a session with the TSM server, then contact your TSM server administrator for further information. <br>(세션이 TSM서버에 의해 취소되는것은 왜그런지 알수 없거나&nbsp;클라이언트가 계속 TSM 에 접속할 수 없다면 뭣 좀 알기위해 TSM 서버 어드민에 접근해보아야 한다.)<br><br>Frequent occurrences of the ANS1809W message can indicate a problem with the network. <br>(빈번한 이 메세지의 출현은 네트워크의 문제라는것을 지적할수있단다.)<br><br>If this message is repeatedly found in the dsmerror.log, <br>investigate possible networking trouble, such as a failing network interface card or router problem. <br>(---dsmerror.log에서 이메세지가 반복적으로 나타나면, 네트워크 트러블을 마니조사해봐라 네트워크 인터페이스카드나 머 라우터라든지... --근데 dsmerror.log로그에서 난 나오는게 없던데..다른 로그만 나오고...;;;)<br><br>One common problem is the media speed of the network adaptors: <br><strong>(가장 흔한 문제는 네트워크 어뎁터의 미디어스피드 이다.)</strong><br>If the network adaptors are set to "auto-negotiate", try changing them to "100%% full duplex". <br>네트워크 어댑터 가 '오토 네고시에이트' 로 되어있으면 '100프로 풀 듀플렉스'로 바꾸어보자<br>--&gt; 이게 말이 쉽지 회사에서 쓰는건데 함부로 바꾸면...소심하자나..;;;<br><br>If the problem persists, then as a temporary measure ask your TSM server administrator increase the <br>COMMTIMEOUT and IDLETIMEOUT option settings on the TSM server. This might reduce the frequency of this message.<br>(그럼에도 불구하고 문제가 계속되면 '코멘드타임아웃'이나 '아이들타임아웃'세팅을 늘려보아라 TSM 에 있단다.<br>메세지 빈도수를 줄여준단다.<br><br><br><br>*** 자주 나타나는 증상은 아니지만 백업시에, 2주에 한번꼴로는 나타나는 거라서 참 거슬린다.***<br></p><br/><br/>tag : <a href="/tag/TSM" rel="tag">TSM</a>,&nbsp;<a href="/tag/Backup" rel="tag">Backup</a>,&nbsp;<a href="/tag/archive" rel="tag">archive</a>,&nbsp;<a href="/tag/IBM" rel="tag">IBM</a>			 ]]> 
		</description>
		<category>공부하는 이야기</category>
		<category>TSM</category>
		<category>Backup</category>
		<category>archive</category>
		<category>IBM</category>

		<comments>http://knulpk.egloos.com/2410280#comments</comments>
		<pubDate>Wed, 05 Aug 2009 00:32:57 GMT</pubDate>
		<dc:creator>nonnous</dc:creator>
	</item>
	<item>
		<title><![CDATA[ TSM 백업시 나타나는 문제점들 ]]> </title>
		<link>http://knulpk.egloos.com/2409123</link>
		<guid>http://knulpk.egloos.com/2409123</guid>
		<description>
			<![CDATA[ 
  <p>취업을 하고 TSM 백업을 받다보니 나타나는 문제점들이 나를 당황하게 한다.<br><br>크게 두가지가 있는데,<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;1. 백업 테이프가 꽉찬 상태에서 TSM에 들어가지 말아야할 백업 파일이 들어가는것.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;2. 테이프의 상태를 확인하지 못해 리드라이트를 허용하지 않아 백업파일이 엉뚱하게 들어간것.<br><br>오늘은 처음의 문제를 해결해 보자.<br><br><br>소산작업시 풀이 났을때 임시풀로 옮긴후 필링만들기 작업</p><p>tsm: YPEDB&gt; q vol //상태를 확인한다.</p><p>Volume Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Storage&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Estimated&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pct&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Volume <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pool Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Capacity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Util&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Status <br>------------------------&nbsp;&nbsp;&nbsp;&nbsp; -----------&nbsp;&nbsp;&nbsp;&nbsp; ----------&nbsp;&nbsp;&nbsp;&nbsp; ---------&nbsp;&nbsp;&nbsp;&nbsp; -----&nbsp;&nbsp;&nbsp;&nbsp; --------<br>/TSMDATA2/DATA01.DSM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IMSIPOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DISK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 512.0 G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; On-Line <br>F10049L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORACOLD_09-&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0 M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Empty&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>F10050L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORACOLD_08-&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 35.9&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>F10051L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_YEAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 19.5&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10052L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_YEAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 39.2&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10058L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_SO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 19.6&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10060L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10061L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.2 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 95.2&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10062L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.1 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10063L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0 M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Empty&nbsp; <br>F10064L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0 M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Empty&nbsp; <br>F10065L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.0 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10066L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10067L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_SO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 27.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10068L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_SO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.1 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 55.5&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10069L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_SO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26.8&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10070L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15.5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10071L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18.1&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10072L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12.9&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10073L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.3&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10074L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.5 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 32.5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10075L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0 M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Empty&nbsp; <br>F10076L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.5 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 92.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10077L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_SO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.5 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10078L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_SO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.7 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 61.5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10079L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_SO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 38.6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; </p><p>&nbsp;</p><p>tsm: YPEDB&gt;q stgpo imsipool f=d //임시풀의 상태를 확인하고 next 의 위치를 옮긴다.</p><p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Storage Pool Name: IMSIPOOL<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Storage Pool Type: Primary<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Device Class Name: DISK<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Estimated Capacity: 512 G<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Space Trigger Util: 0.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pct Util: 0.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pct Migr: 0.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pct Logical: 100.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; High Mig Pct: 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Low Mig Pct: 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Migration Delay: 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Migration Continue: Yes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Migration Processes: 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclamation Processes: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next Storage Pool: YPE_DA //현재는 YPE_DA 이므로 ifc_so 로 바꾸어준다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclaim Storage Pool: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Maximum Size Threshold: No Limit<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Access: Read/Write<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Description: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Overflow Location: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cache Migrated Files?: No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Collocate?: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclamation Threshold: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Offsite Reclamation Limit: <br>&nbsp;Maximum Scratch Volumes Allowed: <br>&nbsp; Number of Scratch Volumes Used: <br>&nbsp;&nbsp; Delay Period for Volume Reuse: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Migration in Progress?: No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Amount Migrated (MB): 13,565.88<br>Elapsed Migration Time (seconds): 202<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclamation in Progress?: <br>&nbsp; Last Update by (administrator): ADMIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Last Update Date/Time: 07/07/09&nbsp;&nbsp; 09:20:58<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Storage Pool Data Format: Native<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy Storage Pool(s): <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Active Data Pool(s): <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Continue Copy on Error?: Yes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CRC Data: No<br>more...&nbsp;&nbsp; (&lt;ENTER&gt; to continue, 'C' to cancel) </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclamation Type: <br>&nbsp;&nbsp;&nbsp;&nbsp; Overwrite Data when Deleted: </p><p><br>tsm: YPEDB&gt;</p><p>tsm: YPEDB&gt;update stgpo imsipool next=ifc_so</p><p><br>ANR2202I Storage pool IMSIPOOL updated. //이런 메시제가 뜨면서 업데이트가 완료되었음을 알려준다.</p><p>tsm: YPEDB&gt;q stgpo imsipool f=d //다시한번 next에 주의하면서 보면</p><p>Storage Pool Name: IMSIPOOL<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Storage Pool Type: Primary<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Device Class Name: DISK<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Estimated Capacity: 512 G<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Space Trigger Util: 0.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pct Util: 0.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pct Migr: 0.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pct Logical: 100.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; High Mig Pct: 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Low Mig Pct: 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Migration Delay: 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Migration Continue: Yes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Migration Processes: 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclamation Processes: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next Storage Pool: IFC_SO&nbsp;&nbsp; //바뀌어있다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclaim Storage Pool: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Maximum Size Threshold: No Limit<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Access: Read/Write<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Description: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Overflow Location: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cache Migrated Files?: No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Collocate?: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclamation Threshold: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Offsite Reclamation Limit: <br>&nbsp;Maximum Scratch Volumes Allowed: <br>&nbsp; Number of Scratch Volumes Used: <br>&nbsp;&nbsp; Delay Period for Volume Reuse: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Migration in Progress?: No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Amount Migrated (MB): 13,565.88<br>Elapsed Migration Time (seconds): 202<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclamation in Progress?: <br>&nbsp; Last Update by (administrator): ADMIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Last Update Date/Time: 07/20/09&nbsp;&nbsp; 13:20:44<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Storage Pool Data Format: Native<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy Storage Pool(s): <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Active Data Pool(s): <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Continue Copy on Error?: Yes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CRC Data: No<br>more...&nbsp;&nbsp; (&lt;ENTER&gt; to continue, 'C' to cancel) </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclamation Type: <br>&nbsp;&nbsp;&nbsp;&nbsp; Overwrite Data when Deleted: </p><p>tsm: YPEDB&gt;move data f10079l4 stgpo=imsipool //79번에 있는 데이터를 옮긴다.</p><p><br>ANR2233W This command will move all of the data stored on volume F10079L4 to other volumes in storage<br>pool IMSIPOOL; the data will be inaccessible to users until the operation completes.</p><p>Do you wish to proceed? (Yes (Y)/No (N)) y&nbsp; //yes 를 선택하고 q pro로 상태를 확인한다.<br>ANS8003I Process number 354 started.</p><p>tsm: YPEDB&gt;q pro</p><p><br>&nbsp;Process&nbsp;&nbsp;&nbsp;&nbsp; Process Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp; Number&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>--------&nbsp;&nbsp;&nbsp;&nbsp; --------------------&nbsp;&nbsp;&nbsp;&nbsp; -------------------------------------------------<br>&nbsp;&nbsp;&nbsp;&nbsp; 354&nbsp;&nbsp;&nbsp;&nbsp; Move Data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Volume F10079L4 (storage pool IFC_SO), Target&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pool IMSIPOOL, Moved Files: 0, Moved Bytes: 0,&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Unreadable Files: 0, Unreadable Bytes: 0.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Current Physical File (bytes): 12,584,457,039&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Waiting for mount of input volume F10079L4 (2&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seconds).&nbsp;&nbsp;&nbsp;&nbsp; </p><p><br>전부 끝났으면&nbsp; 임시풀에 있는 데이터를 넥스트인 IFC_SO 로 보내야 한다.<br>하지만 그 전에 임시풀에서 내리면 넥스트인 IFC_SO가 도로 그 데이터를 받을 수 있으므로<br>IFC_SO를 리드온니 상태로 바꾸어 줘야 한다.</p><p>tsm: YPEDB&gt;update vol f10058l4 acc=readonly //이렇게 한다.</p><p>그리고 나서 임시풀을 내려주는데 내린다는 말의 뜻은 hi스택을 100d에서 0으로 내려야 한다.</p><p>내리기 전에 hi스택이 어떤값을 가지고 있는지 볼 필요가 있다.</p><p>tsm: YPEDB&gt;q stgpo imsipool f=d //이렇게 치면<br>&nbsp;Storage Pool Name: IMSIPOOL<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Storage Pool Type: Primary<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Device Class Name: DISK<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Estimated Capacity: 512 G<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Space Trigger Util: 99.9<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pct Util: 99.9<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pct Migr: 99.9<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pct Logical: 100.0&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; High Mig Pct: 100&nbsp;&nbsp; //100이다 여기를 살필것<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Low Mig Pct: 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Migration Delay: 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Migration Continue: Yes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Migration Processes: 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclamation Processes: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next Storage Pool: IFC_SO<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclaim Storage Pool: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Maximum Size Threshold: No Limit<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Access: Read/Write<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Description: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Overflow Location: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cache Migrated Files?: No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Collocate?: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclamation Threshold: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Offsite Reclamation Limit: <br>&nbsp;Maximum Scratch Volumes Allowed: <br>&nbsp; Number of Scratch Volumes Used: <br>&nbsp;&nbsp; Delay Period for Volume Reuse: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Migration in Progress?: Yes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Amount Migrated (MB): 0.00<br>Elapsed Migration Time (seconds): 742<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclamation in Progress?: <br>&nbsp; Last Update by (administrator): ADMIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Last Update Date/Time: 07/22/2009 19:15:03<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Storage Pool Data Format: Native<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy Storage Pool(s): <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Active Data Pool(s): <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Continue Copy on Error?: Yes<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CRC Data: No<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reclamation Type: <br>&nbsp;&nbsp;&nbsp;&nbsp; Overwrite Data when Deleted: </p><p>&nbsp;이렇게 나온다. 그리고 나서 100을 확인한 후 내린다.</p><p>&nbsp;이때에는</p><p>tsm: YPEDB&gt;update stgpo imsipool hi=0&nbsp;&nbsp;&nbsp;&nbsp; // 이렇게 쳐넣으면 된다.<br>ANR2202I Storage pool IMSIPOOL updated. </p><p>q vol을 쳐봐서 임시풀이 0 이 되면 다시 100을 올려준다.</p><p>tsm: YPEDB&gt;q vol<br>&nbsp;<br>Volume Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Storage&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Estimated&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pct&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Volume <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pool Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Capacity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Util&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Status <br>------------------------&nbsp;&nbsp;&nbsp;&nbsp; -----------&nbsp;&nbsp;&nbsp;&nbsp; ----------&nbsp;&nbsp;&nbsp;&nbsp; ---------&nbsp;&nbsp;&nbsp;&nbsp; -----&nbsp;&nbsp;&nbsp;&nbsp; --------<br>/TSMDATA2/DATA01.DSM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IMSIPOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DISK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 512.0 G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; On-Line&nbsp; <br>/TSMDATA2/reclaim/00000-&nbsp;&nbsp;&nbsp;&nbsp; RECLPOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FILEDEV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 102.4 G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11.4&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>&nbsp;455.BFS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>/TSMDATA2/reclaim/00000-&nbsp;&nbsp;&nbsp;&nbsp; RECLPOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FILEDEV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 102.4 G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 81.7&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>&nbsp;456.BFS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>/TSMDATA2/reclaim/00000-&nbsp;&nbsp;&nbsp;&nbsp; RECLPOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FILEDEV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 102.4 G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 36.1&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>&nbsp;457.BFS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>/TSMDATA2/reclaim/00000-&nbsp;&nbsp;&nbsp;&nbsp; RECLPOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FILEDEV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 102.4 G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>&nbsp;458.BFS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>/TSMDATA2/reclaim/00000-&nbsp;&nbsp;&nbsp;&nbsp; RECLPOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FILEDEV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 102.4 G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>&nbsp;459.BFS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>F10049L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORACOLD_09-&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0 M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Empty&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>F10050L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORACOLD_08-&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 35.9&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>F10051L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_YEAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 19.5&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10052L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_YEAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 39.2&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10058L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_SO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.7 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 70.2&nbsp;&nbsp;&nbsp;&nbsp; Filling //이걸 다 빼준다.<br>F10060L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10061L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.9 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 69.8&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10062L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.1 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10063L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0 M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Empty&nbsp; <br>F10064L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0 M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Empty&nbsp; <br>F10065L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.0 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10066L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10067L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_SO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 27.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10068L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_SO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.1 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 55.2&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10069L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YPE_SO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26.8&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10070L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15.5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10071L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.1 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 88.5&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10072L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12.9&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10073L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.1&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>F10074L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0 M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Empty&nbsp; <br>F10075L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0 M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Empty&nbsp; <br>F10076L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_DA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.5 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 76.9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10077L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_SO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.5 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10078L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_SO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.7 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 61.5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Full&nbsp; <br>F10079L4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFC_SO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3100CLASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.6 T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 32.0&nbsp;&nbsp;&nbsp;&nbsp; Filling <br>&nbsp;</p><p>위의 IFC_SO가 0이 이 될때까지 imsipool의 hi값을 0으로 내려준다.</p><p>tsm: YPEDB&gt;update stgpo imsipool hi=0 <br>ANR2202I Storage pool IMSIPOOL updated.</p><p>imsipool값이 0이 되면 100으로 올린뒤에 도로 58번의 값을 imsipool로 옮겨준다.</p><p><br>tsm: YPEDB&gt;update stgpo imsipool hi=100&nbsp; //올리고</p><p>tsm: YPEDB&gt;move data&nbsp; f10058l4=imsipool //옮겨준다.</p><p>tsm: YPEDB&gt;q volh type=dbbackup /// tsm 중에 모두가 private 가되어 어느쪽을 빼야할지 모를때 이렇게 <br>치고 가장 마지막에 access 된놈을 빼야한다. ///</p><p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Date/Time: 07/19/09&nbsp;&nbsp; 09:05:39<br>&nbsp;&nbsp;&nbsp;&nbsp; Volume Type: BACKUPFULL<br>&nbsp;&nbsp; Backup Series: 178<br>Backup Operation: 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Volume Seq: 1<br>&nbsp;&nbsp;&nbsp; Device Class: 3100CLASS<br>&nbsp;&nbsp;&nbsp;&nbsp; Volume Name: F10057L4<br>&nbsp;Volume Location: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Command: </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Date/Time: 07/20/09&nbsp;&nbsp; 09:02:37 //20일, 위에것보다 하루 빠르므로 59번을 빼주면 된다.<br>&nbsp;&nbsp;&nbsp;&nbsp; Volume Type: BACKUPFULL<br>&nbsp;&nbsp; Backup Series: 179<br>Backup Operation: 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Volume Seq: 1<br>&nbsp;&nbsp;&nbsp; Device Class: 3100CLASS<br>&nbsp;&nbsp;&nbsp;&nbsp; Volume Name: F10059L4<br>&nbsp;Volume Location: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Command: <br></p><br/><br/>tag : <a href="/tag/TSM" rel="tag">TSM</a>,&nbsp;<a href="/tag/DB" rel="tag">DB</a>,&nbsp;<a href="/tag/backup" rel="tag">backup</a>			 ]]> 
		</description>
		<category>공부하는 이야기</category>
		<category>TSM</category>
		<category>DB</category>
		<category>backup</category>

		<comments>http://knulpk.egloos.com/2409123#comments</comments>
		<pubDate>Mon, 03 Aug 2009 07:55:50 GMT</pubDate>
		<dc:creator>nonnous</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 우리아들 김시와 ]]> </title>
		<link>http://knulpk.egloos.com/2192688</link>
		<guid>http://knulpk.egloos.com/2192688</guid>
		<description>
			<![CDATA[ 
  <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds10.egloos.com/pds/200811/26/27/e0039327_492cfd1ce40aa.jpg" width="480" height="640" onclick="Control.Modal.openDialog(this, event, 'http://pds10.egloos.com/pds/200811/26/27/e0039327_492cfd1ce40aa.jpg');" /></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds13.egloos.com/pds/200811/26/27/e0039327_492cfd1ecbe3e.jpg" width="480" height="640" onclick="Control.Modal.openDialog(this, event, 'http://pds13.egloos.com/pds/200811/26/27/e0039327_492cfd1ecbe3e.jpg');" /></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds13.egloos.com/pds/200811/26/27/e0039327_492cfd1f8a2cf.jpg" width="480" height="640" onclick="Control.Modal.openDialog(this, event, 'http://pds13.egloos.com/pds/200811/26/27/e0039327_492cfd1f8a2cf.jpg');" /></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds12.egloos.com/pds/200811/26/27/e0039327_492cfd20402ce.jpg" width="480" height="640" onclick="Control.Modal.openDialog(this, event, 'http://pds12.egloos.com/pds/200811/26/27/e0039327_492cfd20402ce.jpg');" /></div><br><br>&nbsp;포메라니안 이제 1살 남아 <br><br>하는짓은 미운 5살의 남자아이같고 생긴것은 미소녀의 티가 흐르는 아이<br>&nbsp;<br>이집트의 시와사막과 같은 털색을 가지고 있다하여 붙여진 그 이름 김시와<br><br>이 아이가 없었다면 힘든 생활들을 이겨낼수 있었을까?<br><br>오늘도 시와 생각에 인터넷 멍멍이 간식코너에 저절로 손이간다.<br><br><br/><br/>tag : <a href="/tag/포메라니안" rel="tag">포메라니안</a>,&nbsp;<a href="/tag/시와" rel="tag">시와</a>,&nbsp;<a href="/tag/멍멍이" rel="tag">멍멍이</a>,&nbsp;<a href="/tag/사랑해" rel="tag">사랑해</a>			 ]]> 
		</description>
		<category>현재생활 이야기</category>
		<category>포메라니안</category>
		<category>시와</category>
		<category>멍멍이</category>
		<category>사랑해</category>

		<comments>http://knulpk.egloos.com/2192688#comments</comments>
		<pubDate>Wed, 26 Nov 2008 07:42:04 GMT</pubDate>
		<dc:creator>nonnous</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 드디어 질러 버렸다~!!!!!!! 오클리 페이로드 백팩 ]]> </title>
		<link>http://knulpk.egloos.com/2190695</link>
		<guid>http://knulpk.egloos.com/2190695</guid>
		<description>
			<![CDATA[ 
  <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds13.egloos.com/pds/200811/25/27/e0039327_492bb1baa0e7b.jpg" width="500" height="500" onclick="Control.Modal.openDialog(this, event, 'http://pds13.egloos.com/pds/200811/25/27/e0039327_492bb1baa0e7b.jpg');" /></div><span style="COLOR: #8d8d8d">오클리 가방 Adaptable Payload Pack Sheet Metal<br></span><br>지난 몇해전에 나온 페이로드 백이지만 그당시의 살인적인 가격으로 망설여지던 이 백을<br><br>이제서야 사게 되었다. 롯데아이몰 고맙습니다. 앞으로 겨울이 다가오니..ㅎㅎㅎㅎ<br><br><br><br/><br/>tag : <a href="/tag/오클리" rel="tag">오클리</a>,&nbsp;<a href="/tag/Oaklay" rel="tag">Oaklay</a>,&nbsp;<a href="/tag/AdaptablePayloadPack" rel="tag">AdaptablePayloadPack</a>			 ]]> 
		</description>
		<category>눈길끄는 이야기</category>
		<category>오클리</category>
		<category>Oaklay</category>
		<category>AdaptablePayloadPack</category>

		<comments>http://knulpk.egloos.com/2190695#comments</comments>
		<pubDate>Tue, 25 Nov 2008 08:31:02 GMT</pubDate>
		<dc:creator>nonnous</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 취직하기가 힘들긴 힘들구나 ]]> </title>
		<link>http://knulpk.egloos.com/2190653</link>
		<guid>http://knulpk.egloos.com/2190653</guid>
		<description>
			<![CDATA[ 
  <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds11.egloos.com/pds/200811/25/27/e0039327_492bb112172dc.jpg" width="500" height="497.058823529" onclick="Control.Modal.openDialog(this, event, 'http://pds11.egloos.com/pds/200811/25/27/e0039327_492bb112172dc.jpg');" /></div><br>이것의 두배가량 되는 자기소개서를 작성을 하였다. 하나하나 발표할때마다 숨이 죽고 기운이 축축 쳐지는것이<br><br>내가 무엇을 잘못해서 떨어졌나 를 생각나게 한다.<br><br>이제부터 특강도 들어보고 여러가지 나의 문제점들을 살펴좌야하겠다.<br/><br/>tag : <a href="/tag/취업" rel="tag">취업</a>,&nbsp;<a href="/tag/정말힘들어" rel="tag">정말힘들어</a>,&nbsp;<a href="/tag/남은기간화이팅" rel="tag">남은기간화이팅</a>			 ]]> 
		</description>
		<category>현재생활 이야기</category>
		<category>취업</category>
		<category>정말힘들어</category>
		<category>남은기간화이팅</category>

		<comments>http://knulpk.egloos.com/2190653#comments</comments>
		<pubDate>Tue, 25 Nov 2008 08:04:31 GMT</pubDate>
		<dc:creator>nonnous</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Linux 기반의 메신져 프로그램. ]]> </title>
		<link>http://knulpk.egloos.com/1713149</link>
		<guid>http://knulpk.egloos.com/1713149</guid>
		<description>
			<![CDATA[ 
  <p>서버 클라리언트 간의 쪽지 기능과 파일 송수신이 가능하도록 구현.<br><br>거의 다 ...%#@^#@&amp;@$%&amp;@$%^<br><br>서버측<br><br>#include &lt;stdio.h&gt;<br>#include &lt;fcntl.h&gt;<br>#include &lt;stdlib.h&gt;<br>#include &lt;signal.h&gt;<br>#include &lt;sys/socket.h&gt;<br>#include &lt;sys/file.h&gt;<br>#include &lt;netinet/in.h&gt;<br>#include &lt;string.h&gt;<br>#include "user_list.h"<br>#include "myutil.h"</p><p>#define MAXLINE&nbsp; 512<br>#define MAX_SOCK 64<br>#define PORT 3030<br>&nbsp;<br>char *escapechar = "exit";<br>int getmax(int);<br>void removeClient(int);&nbsp;&nbsp;&nbsp;/* 채팅 탈퇴 처리 함수 */<br>char* mid(char* str,int a,int b);</p><p>int&nbsp; maxfdp1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;/* 최대 소켓번호 +1 */<br>int&nbsp; num_chat = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;/* 채팅 참가자 수 */<br>//int client_s[MAX_SOCK];&nbsp;&nbsp;&nbsp; &nbsp;/* 채팅에 참가자 소켓번호 목록 */</p><p>int main(int argc, char *argv[])&nbsp; {<br>&nbsp;char rline[MAXLINE], my_msg[MAXLINE];<br>&nbsp;char *start = "Connected to chat_server YOU ARE NOW : Waiting_Room\n1.Room_List 2.Make_Room 3.Room_Enter 4.User_List (/h Help)\n Input&gt;";<br>&nbsp;int i, j, n;<br>&nbsp;int s, client_fd, clilen;</p><p>&nbsp;fd_set&nbsp; read_fds;&nbsp;&nbsp;&nbsp;&nbsp; /* 읽기를 감지할 소켓번호 구조체 */<br>&nbsp;struct sockaddr_in&nbsp; client_addr, server_addr;<br>&nbsp;&nbsp; if(argc != 2)&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("사용법 :%s port\n", argv[0]); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(0);<br>&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp; printf("\nServer Is Running NoW\n\n");<br>&nbsp;&nbsp; /* 초기소켓 생성 */<br>&nbsp;if((s = socket(PF_INET, SOCK_STREAM, 0)) &lt; 0)&nbsp; {&nbsp; <br>&nbsp;&nbsp;printf("Server: Can't open stream socket.");&nbsp;&nbsp; <br>&nbsp;&nbsp;exit(0);<br>&nbsp;}<br>&nbsp;&nbsp; <br>&nbsp;&nbsp; /* server_addr 구조체의 내용 세팅 */<br>&nbsp;bzero((char *)&amp;server_addr, sizeof(server_addr));&nbsp; <br>&nbsp;server_addr.sin_family = AF_INET;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;server_addr.sin_addr.s_addr = htonl(INADDR_ANY);<br>&nbsp;server_addr.sin_port = htons(atoi(argv[1]));&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; <br>&nbsp;if (bind(s,(struct sockaddr *)&amp;server_addr,sizeof(server_addr)) &lt; 0) {<br>&nbsp;&nbsp;printf("Server: Can't bind local address.\n");<br>&nbsp;&nbsp;exit(0);<br>&nbsp;}<br>&nbsp;&nbsp; /* 클라이언트로부터 연결요청을 기다림 */<br>&nbsp;listen(s, 5);</p><p>&nbsp;maxfdp1 = s + 1;&nbsp;&nbsp;&nbsp; /* 최대 소켓번호 +1 */</p><p>&nbsp;while(1) {<br>&nbsp;&nbsp;&nbsp; int temp_socketfd=0;</p><p>&nbsp;&nbsp;&nbsp; for(i=0;i&lt;MAXLINE;i++){<br>&nbsp;&nbsp;&nbsp;rline[i]='\0';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //rline[] 초기화<br>&nbsp;&nbsp;}</p><p>&nbsp;&nbsp;&nbsp;FD_ZERO(&amp;read_fds);<br>&nbsp;&nbsp;FD_SET(s, &amp;read_fds);<br>&nbsp; <br>&nbsp;&nbsp;for(i=0; i&lt;num_chat; i++){&nbsp; <br>&nbsp;&nbsp;&nbsp;temp_socketfd = get_user_socketfd(i);<br>&nbsp;&nbsp;&nbsp;FD_SET(temp_socketfd,&amp;read_fds);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;maxfdp1 = getmax(s) + 1;&nbsp;&nbsp;&nbsp;&nbsp; /* maxfdp1 재 계산 */<br>&nbsp;&nbsp;if (select(maxfdp1, &amp;read_fds, (fd_set *)0, (fd_set *)0,(struct timeval *)0) &lt; 0) {<br>&nbsp;&nbsp;&nbsp;printf("select error &lt;= 0 \n");<br>&nbsp;&nbsp;&nbsp;exit(0);<br>&nbsp;&nbsp;} <br>&nbsp;&nbsp;if(FD_ISSET(s, &amp;read_fds)) {<br>&nbsp;&nbsp;&nbsp;clilen = sizeof(client_addr);<br>&nbsp;&nbsp;&nbsp;client_fd = accept(s, (struct sockaddr *)&amp;client_addr, &amp;clilen);<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;char *ip= "127.0.0.1";<br>//&nbsp;&nbsp;&nbsp;char *ip = inet_ntoa(client_addr.sin_addr);<br>//&nbsp;&nbsp;&nbsp;int dsfsdf = inet_ntoa(client_addr.sin_addr.s_addr);<br>&nbsp;&nbsp;&nbsp;printf("\n클라이언트 : %d \n",ip);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if(client_fd == -1)&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;printf("accept error\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;exit(0);<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;/* 채팅 클라이언트 목록에 추가 */<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;num_chat++;<br>&nbsp;&nbsp;&nbsp;recv(client_fd, rline, MAXLINE, 0);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;send(client_fd, start, strlen(start), 0);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;insert_user_node(client_fd,rline,ip);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;printf("%d번째 사용자 추가.(%s)\n", num_chat,rline);<br>&nbsp;&nbsp;&nbsp;display();<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; /* 클라이언트가 보낸 메시지를 모든 클라이언트에게 방송 */<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;for(i = 0; i &lt; num_chat; i++)&nbsp; { <br>&nbsp;&nbsp;&nbsp;temp_socketfd = get_user_socketfd(i);<br>&nbsp;&nbsp;&nbsp;int current_user_room = get_user_room(temp_socketfd); //현재 어느 방에 있는 사용자가 메시지를 보냈는지 체크한다. <br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;if(FD_ISSET(temp_socketfd, &amp;read_fds)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if((n = recv(temp_socketfd, rline, MAXLINE, 0))&nbsp; &lt;= 0)&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removeClient(i);&nbsp;/* abrupt exit */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 종료문자 처리 */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if(strstr(rline, escapechar) != NULL) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removeClient(i);&nbsp;/* abrupt exit */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue; <br>&nbsp;&nbsp;&nbsp;}<br>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/* 모든 채팅 참가자에게 메시지 방송 */ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;rline[n] = '\0';</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; // 쪽지//////////////////////////////////////////</p><p>&nbsp;&nbsp;&nbsp; // 대기실, 대화방 어디에 있던지 위치에 상관없이 쪽지(1:1대화) 가능.<br>&nbsp;&nbsp;&nbsp; // 대화방 간에 쪽지(1:1) 가능</p><p>&nbsp;&nbsp;&nbsp;&nbsp;char *temp = strchr(rline,' ');<br>&nbsp;&nbsp;&nbsp;&nbsp;temp++; //공백 없애기 위해<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;if(temp[0]=='/'){ //쪽지 옵션&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' / ' &lt;-- 이 문자로 시작하면 대화가 아닌 특정 기능 수행이므로 따로 처리한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *option = mid(temp,1,3);&nbsp;&nbsp;&nbsp; // 옵션부분을 파싱한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//printf("|%s|",option);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *id_message=strchr(temp,' ');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id_message++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(strcmp(option,"/to")==0){ //쪽지 /to 옵션일경우&nbsp;&nbsp;&nbsp; ex) /to 닉네임 할말<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *message = strchr(id_message,' '); //메시지를 파싱한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *id = mid(id_message,1,strcspn(id_message," ")); // 아이디를 파싱<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//printf("\nid-|%s|,message-|%s|\n",id,message);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int message_socketfd = get_sockerfd_by_user_name(id);&nbsp; //아이디로부터 소켓번호를 얻어온다</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//printf("\nsocket : %d\n",message_socketfd);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(message_socketfd==0){ //소켓번호가 0이면 사용자가 아이디를 잘못입력 한 것이므로 오류메시지 전송<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd, "\n존재하지 않는 사용자입니다.\n", strlen("\n존재하지 않는 사용자입니다.\n"), 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char t[1024] ;&nbsp; //쪽지를 전달한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(t,"%s SEND YOU THIS MESSAGE : %s",get_user_name_by_socketfd(temp_socketfd),message);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(message_socketfd,t,strlen(t),0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}// /to 옵션<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if(strcmp(option,"/tr")==0){ //파일 전송 명령</p><p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp; ex)&nbsp; 클라이언트 A가 "/tr 대화명(client B) filename "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 입력시 server에서 client B 로 "/tr IP Address(client A) filename"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 이 전송됨.(대화명이 IP Address로 변환되어 전송)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; client A는 "/reply transfer filename " 을 서버로 부터 받고 송신모드 전환<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 이 때부터는 서버와 독립적으로 클라이언트 대 클라이언트 연결<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; client B가 서버로 부터 받은 주소를 통해 client A에 접속. 파일 받음.</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *filename=strchr(id_message,' '); //수신자가 받을 파일명<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *id = mid(id_message,1,strcspn(id_message," ")); //수신자 아이디<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char message[50];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename[strlen(filename)-1]= '\0';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *sender_name = get_user_name_by_socketfd(temp_socketfd); //송신자의 소켓번호로부터 사용자의 닉네임 파악<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *sender_ip = get_user_ip_by_socketfd(temp_socketfd); //송신자의 소켓번호로 송신자의 아이피 파악</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int message_socketfd = get_sockerfd_by_user_name(id);//사용자 아이디로부터 소켓번호를 얻어온다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(message_socketfd==0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd,"\n없는 사용자 입니다.\n",strlen("\n없는 사용자 입니다.\n"),0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(message,"/reply transfer %s", filename); //송신자에게 보내는 메시지<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 위의 메시지를 보내 사용자가 송신 작업을 수행하도록 한다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd,message,strlen(message),0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(&amp;message, 0, sizeof(message));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(message,"/tr %s %s",sender_ip, filename); //수신자에게 보내는 메시지<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(message_socketfd,message,strlen(message),0); //송신자의 정보를 전달해 수신자가 송신자의 서버에 접속하는 작업을 수행<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //할수 있도록 한다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else if(temp[1]=='q'){&nbsp; //대화방을 나가고자 할때 사용되는 명령<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int room = get_user_room(temp_socketfd);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(room==0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd,"\n현재 위치는 대기실 입니다.\n",strlen("\n현재 위치는 대기실 입니다.\n"),0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; user_out_of_room(room,temp_socketfd); //대화방에서 대기실로 나가는 처리를 한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; send(temp_socketfd,"\n대기실로 나갑니다.\n",strlen("\n대기실로 나갑니다.\n"),0);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else if(temp[1]=='h'){ //도움말<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *m = "SMS : /to USER MESSAGE&nbsp; (/to nonnous HI~)\nFILE TRASFER : /tr USER FILENAME (/tr nonnous readme.txt)\nOUT : /q\nEXIT : exit\n";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd,m,strlen(m),0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;</p><p><br>&nbsp;</p><p><br>&nbsp;&nbsp;&nbsp;&nbsp;if(get_user_room(temp_socketfd)==0){ //유저의 위치가 대화방일때는 메뉴를 선택하도록한다. </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *temp = "1.Room_List 2.Make_Room 3.Room_Enter 4.User_List (/h Help)\n Input&gt;";</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//char * strchr(char *s, int c)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int select = atoi(strchr(rline,' '));</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(select==1){&nbsp; //사용자가 대화방에 들어가고자 할때<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(get_room_num()==0){ //개설된 방이 없을때<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd,"\nThere is no Room To CREATE.\n\n",strlen("\nThere is no Room To CREATE\n\n"),0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd, room_info(), strlen(room_info()), 0); //개설된 방이 있을땐 방 목록 정보를 제공<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else if(select==2){ //사용자가 방을 개설하기를 원할때<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char message[512];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd, "\nTYPE ROOM NAME TO CREATE&gt;", strlen("\nTYPE ROOM NAME TO CREATE&gt;"), 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int n = recv(temp_socketfd, rline, MAXLINE, 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rline[n-1] = '\0';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int room_num = insert_room_node(strchr(rline,' '));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user_node *t_node = get_user_node_by_socketfd(temp_socketfd);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_node-&gt;room = room_num; //사용자의 소속 방 번호를 변경해준다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(message,"\n%d YOU ARE ENTER THAT ROOM.\n ",room_num);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd, message, strlen(message), 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;</p><p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else if(select==3){ //사용자가&nbsp; 입장을 선택했을때.</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;room_display();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char message[512];</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd, "\nENTER THE ROOM NUMBER .\n", strlen("\nENTER THE ROOM NUMBER.\n"), 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int n = recv(temp_socketfd, message, MAXLINE, 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int num = atoi(strchr(message,' '));</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(user_join_room(num,temp_socketfd)==0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd, "\nTHRER'S NO ROOM YOU CHOOSE.\n", strlen("\nTHRER'S NO ROOM YOU CHOOSE.\n"), 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(message,"\n%d YOU ARE ENTER THE ROOM.\n",num);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd, message, strlen(message), 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else if(select ==4){ //사용자가 사용자의 목록을 요청했을때<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user_node *temp = user_head;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd, "\n-------USER LIST-----------\n", strlen("\n-------USER LIST-----------\n"), 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char buff[55];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int i=1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(temp!=NULL){<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(buff,"%2d. %s(%s)\n",i++,temp-&gt;user_name,temp-&gt;user_ip);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd, buff, strlen(buff), 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp = temp-&gt;next;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd, "\n-------USER LIST-----------\n", strlen("\n-------USER LIST-----------\n"), 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p><p>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;printf("%d\n",select);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd, temp, strlen(temp), 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}else{ // 유저의 현재 위치가 대화방 내일 경우에</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (j = 0; j &lt; get_user_num(); j++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int temp_socketfd2 = get_user_socketfd(j);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(current_user_room ==get_user_room(temp_socketfd2)) //자신과 동일한 방에 있는 사용자에게만 메시지 출력<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp_socketfd2, rline, n, 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//printf("socket : %d\n",temp_socketfd2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%s", rline);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;} <br>&nbsp;}&nbsp; &nbsp;&nbsp;<br>} &nbsp;&nbsp;&nbsp;</p><p>/* 채팅 탈퇴 처리 */<br>void removeClient(int i) {<br>&nbsp;int temp_socketfd = get_user_socketfd(i);<br>&nbsp;close(temp_socketfd);<br>//&nbsp; &nbsp;if(i != num_chat-1) client_s[i] = client_s[num_chat-1];</p><p>&nbsp;int room = get_user_room(temp_socketfd);<br>&nbsp;if(room!=0&amp;&amp; user_out_of_room(room,0)==1){ //마지막 사용자일땐 방도 함께 삭제<br>&nbsp;&nbsp;delete_room_node(room);<br>&nbsp;}</p><p>&nbsp;delete_user_node(temp_socketfd);<br>&nbsp; &nbsp;num_chat--;<br>&nbsp;printf("CHATTER 1 IS OUT NOW . NOW IN HERE = %d\n", num_chat);<br>}</p><p>/* clien_s[] 내의 최대 소켓번호 얻기(초기치는 k) */<br>int getmax(int k) {<br>&nbsp;int max = k;&nbsp;&nbsp;&nbsp; <br>&nbsp;int r;<br>&nbsp;for (r=0; r &lt; num_chat; r++) {<br>&nbsp; &nbsp;&nbsp;if (get_user_socketfd(r) &gt; max ) max = get_user_socketfd(r);<br>&nbsp;}<br>&nbsp; return max;<br>}</p><p><br><br>클라이언트 측<br><br></p><p>#include &lt;stdio.h&gt;<br>#include &lt;fcntl.h&gt;<br>#include &lt;stdlib.h&gt;<br>#include &lt;sys/socket.h&gt;<br>#include &lt;netinet/in.h&gt;<br>#include &lt;sys/time.h&gt;<br>#include &lt;string.h&gt;<br>#include &lt;pthread.h&gt;<br>#include &lt;arpa/inet.h&gt;<br>#include &lt;netdb.h&gt;<br>#include &lt;pthread.h&gt;<br>#include "myutil.h"<br>//#include "transfer.h"</p><p>#define MAXLINE 512<br>#define MAX_SOCK 128<br>#define port&nbsp; 7479<br>#define max 5<br>#define bufsize 1024<br>&nbsp;<br>//void* recv_thread(void* ip,void* filename);</p><p>char *escapechar = "exit";<br>char name[10];&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* 채팅에서 사용할 이름 */</p><p>typedef union addr {&nbsp; <br>&nbsp;unsigned long int my_ip;&nbsp;<br>&nbsp;struct in_addr my_addr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>}InetAddress;</p><p>void recv_thread(char *ip_filename){&nbsp; // 클라이언트가 데이터를 받을 때 사용하는 함수<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//원래는 파일 수신도 스레드로 처리하려 했으나<br>&nbsp;struct sockaddr_in saddr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //쓰레드 사용하지 않아도 잘 수행되어 단순 호출 하였습니다.<br>&nbsp; int sockfd;<br>&nbsp; char buf[bufsize]={0,};<br>&nbsp; int fd;<br>&nbsp; int cnt;</p><p><br>&nbsp; char *ip = mid(ip_filename,1,strcspn((char *)ip_filename," ")); //서버로 부터 전송받은 송신자의 주소를 파싱<br>&nbsp;&nbsp; char *filename = NULL;<br>&nbsp;&nbsp; filename = strchr(ip_filename,' ');&nbsp; //파일명을 파싱함.<br>&nbsp;&nbsp; filename++;<br>&nbsp;&nbsp; filename[strlen(filename)]='\0';</p><p>&nbsp; memset(&amp;saddr, 0, sizeof(saddr));<br>&nbsp; saddr.sin_family = AF_INET;<br>&nbsp; saddr.sin_addr.s_addr = inet_addr(ip);<br>&nbsp; saddr.sin_port = htons(port);<br>&nbsp; sockfd=socket(AF_INET, SOCK_STREAM, 0);</p><p>&nbsp; connect(sockfd, (struct sockaddr*)&amp;saddr, sizeof(saddr)); //송신자에 연결</p><p>&nbsp; fd = open(filename, O_WRONLY| O_CREAT| O_TRUNC, 666); //전송 받을 파일명으로 파일 생성<br>&nbsp;printf("filename : %s &amp;&amp; fd : %d",filename,fd);<br>&nbsp; while((cnt=recv(sockfd, buf, bufsize, 0)) &gt; 0 ){ //새로 만든 파일에 송신자로 부터 받은 바이트를 쓴다.<br>&nbsp;&nbsp;// printf("%s",buf);<br>&nbsp;&nbsp;write(fd, buf, cnt);<br>&nbsp;&nbsp; }<br>&nbsp; close(fd); //소켓 닫음<br>&nbsp; close(sockfd);<br>}</p><p>void *send_thread(void *filename){&nbsp; //파일 전송시 사용될 함수. 스레드로 처리됨.<br>&nbsp;struct sockaddr_in saddr, caddr;&nbsp; <br>&nbsp;int sockfd, newsockfd;<br>&nbsp;char buf[bufsize];<br>&nbsp;int fd;<br>&nbsp;int cnt, cli_len;<br>&nbsp;memset(&amp;saddr, 0, sizeof(saddr));<br>&nbsp;saddr.sin_family = AF_INET;<br>&nbsp;saddr.sin_addr.s_addr = htonl(INADDR_ANY);<br>&nbsp;saddr.sin_port = htons(port);<br>&nbsp;sockfd = socket(AF_INET,SOCK_STREAM,0);<br>&nbsp;bind(sockfd, (struct sockaddr*)&amp;saddr, sizeof(saddr));</p><p>&nbsp;printf("\nREADY\n");<br>&nbsp;listen(sockfd, max);&nbsp; //수신자의 접속을 기다리고 있음<br>&nbsp;while(1){<br>&nbsp;&nbsp;cli_len = sizeof(caddr);<br>&nbsp;&nbsp;newsockfd=accept(sockfd, (struct sockaddr*)&amp;caddr, &amp;cli_len); //수신자가 접속을 하면 소켓 번호 할당.<br>&nbsp;// filename[strlen(filename)-1]='\0';<br>&nbsp;//printf("\nfile size : %d : |%s|\n",strlen(filename),filename);</p><p>&nbsp;&nbsp;fd = open(filename, O_RDONLY); //송신하기로 한 파일 오픈 후 파일에 대한 번호 할당<br>&nbsp;//printf("\nfd : |%d|\n",fd);<br>&nbsp;while(read(fd, buf, bufsize) &gt; 0){ //파일 바이트 읽어들이고<br>&nbsp;//&nbsp;&nbsp; printf("%s",buf); <br>&nbsp;&nbsp;send(newsockfd, buf, strlen(buf),0); // 수신측에 전송한다.<br>&nbsp;}</p><p>&nbsp;close(newsockfd);<br>&nbsp;close(fd);<br>&nbsp;//close(sockfd);<br>&nbsp;}<br>}</p><p>&nbsp;</p><p><br>int main(int argc, char *argv[]) { //클라이언트<br>&nbsp;char line[MAXLINE], message[MAXLINE+1];<br>&nbsp; &nbsp;int n, pid;<br>&nbsp; &nbsp;struct sockaddr_in server_addr;<br>&nbsp; &nbsp;int maxfdp1;<br>&nbsp;int s;&nbsp; /* 서버와 연결된 소켓번호 */<br>&nbsp;char server_address[30];<br>&nbsp;<br>&nbsp;pthread_t t_id;<br>&nbsp; fd_set read_fds;<br>&nbsp; <br>&nbsp; if(argc != 4) {<br>&nbsp;&nbsp;&nbsp;&nbsp; printf("사용법 : %s sever_IP port name \n", argv[0]);<br>&nbsp;&nbsp;&nbsp;&nbsp; exit(0);<br>&nbsp; }</p><p>&nbsp; /* 채팅 참가자 이름 구조체 초기화 */<br>&nbsp; sprintf(name, "[%s]", argv[3]);</p><p>&nbsp; /* 소켓 생성 */<br>&nbsp; if ((s = socket(PF_INET, SOCK_STREAM, 0)) &lt; 0) {<br>&nbsp;&nbsp;&nbsp;&nbsp; printf("Client : Can't open stream socket.\n");<br>&nbsp;&nbsp;&nbsp;&nbsp; exit(0);<br>&nbsp; }<br>&nbsp;struct hostent *host = gethostbyname(argv[1]);&nbsp; //호스트의 이름으로 부터 주소를 얻기 위해 gethostbyname사용.<br>&nbsp;InetAddress myaddr;</p><p>&nbsp;<br>&nbsp;//클라이언트 실행시 두가지로 실행시킬 수가 있다. <br>&nbsp;//도메인으로 서버의 주소를 지정할 것인가. 아이피로 서버의 주소를 지정할 것인가이다.<br>&nbsp;// ex1) ./client sce.sejong.ac.kr 9887 nonnous&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex2) ./client 127.0.0.1 9887 nonnous</p><p>&nbsp;if(host!=NULL){&nbsp;&nbsp; //sce.sejong.ac.kr 와 같이 도메인 주소로 입력되었을 경우 십진 주소로 변환하는 작업<br>&nbsp;&nbsp;myaddr.my_ip =&nbsp; *((unsigned long*)host-&gt;h_addr_list[0]) ;&nbsp;&nbsp; //호스트의 주소를 long형으로 반환하고<br>&nbsp;&nbsp;strcpy(server_address,inet_ntoa( myaddr.my_addr )); // 십진 주소형태의 문자열로 만들어 server_address에 할당한다.<br>&nbsp;}else{&nbsp;&nbsp;&nbsp;&nbsp; // 도메인이 아닌 십진 IP Address로 입력했을 경우엔 변환이 필요없이 바로 접속하면 된다. <br>&nbsp;&nbsp;</p><p>&nbsp;&nbsp;strcpy(server_address,argv[1]);<br>&nbsp;}</p><p>&nbsp;printf("\n서버 주소 %s\n",server_address);</p><p>&nbsp;</p><p>&nbsp; /* 채팅 서버의 소켓주소 구조체 server_addr 초기화 */<br>&nbsp; bzero((char *)&amp;server_addr, sizeof(server_addr));<br>&nbsp; server_addr.sin_family = AF_INET;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp; server_addr.sin_addr.s_addr = inet_addr(server_address); <br>&nbsp; server_addr.sin_port = htons(atoi(argv[2]));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p><p>&nbsp; /* 연결요청 */<br>&nbsp;if(connect(s, (struct sockaddr *)&amp;server_addr, sizeof(server_addr)) &lt; 0) { //서버에 접속 요청<br>&nbsp;&nbsp;printf("Client : Can't connect to server.\n");<br>&nbsp;&nbsp;exit(0);<br>&nbsp;}else {<br>&nbsp;&nbsp;printf("SERVER CONNECTED~!. \n");<br>&nbsp;&nbsp; send(s, argv[3], strlen(argv[3]), 0);<br>&nbsp;}<br>&nbsp; <br>&nbsp;maxfdp1 = s + 1;<br>&nbsp;FD_ZERO(&amp;read_fds);</p><p>&nbsp;&nbsp;&nbsp; while(1) { //무한 루프를 돌며 메시지를 송신하거나 수신한다. <br>&nbsp;&nbsp;FD_SET(0, &amp;read_fds);<br>&nbsp;&nbsp;FD_SET(s, &amp;read_fds);</p><p>&nbsp;&nbsp;&nbsp;&nbsp; if(select(maxfdp1, &amp;read_fds, (fd_set *)0, (fd_set *)0, (struct timeval *)0) &lt; 0)&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("select error\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(0);<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; if (FD_ISSET(s, &amp;read_fds))&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int size;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((size = recv(s, message, MAXLINE, 0)) &gt; 0)&nbsp; { //서버로 부터 온 메시지를 받는다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message[size] = '\0';<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if(message[0]=='/'){ //파일 전송&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //서버로부터 온 메시지가 일반 메시지가 아닌<br>&nbsp;&nbsp;&nbsp;&nbsp; char *option = mid(message,1,strcspn(message," "));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 미리 약속한 신호 메시지일 경우 특정 루틴을 실행하기<br>&nbsp;&nbsp;&nbsp;&nbsp; char temp_buff[244]= {0};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 위해 파싱한다.<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; printf("\n|message : %s|\n",message);<br>&nbsp;&nbsp;&nbsp;&nbsp; if(strcmp(option,"/tr")==0){&nbsp; // 이 메시지는 다른 클라이언트가 파일을 보내길 원할 때 서버로부터 전송되어 진다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 여기에 해당될 경우&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /tr 주소 파일명&nbsp;&nbsp;&nbsp; ex) /tr 210.107.236.150 readme.txt&nbsp; 형태로 온다.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char *ip_filename&nbsp; = strchr(message,' ');&nbsp; //필요한 정보만 얻기 위해 메시지를 파싱하여 앞에 "/tr"을 제거한다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ip_filename++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recv_thread(ip_filename); //송신자의 주소와 전송받을 파일명을 recv_thread에 넘겨준다. <br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; else if(strcmp(option,"/reply")==0){ // 이 메시지는 다른 클라이언트로 파일을 보내길 원할 때 요청 메시지를 보내고<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 그에 대한 응답으로 서버로 부터 받는 메시지 이다.<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char *option_filename&nbsp; = strchr(message,' ');&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;option_filename++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *option2 =&nbsp; mid(option_filename,1,strcspn(option_filename," "));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *filename = strchr(option_filename,' ');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *trash = strchr(filename,' ');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\n%s 전송합니다.\n",trash);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_create(&amp;t_id,NULL,send_thread,filename); //스레드를 실행하여 송신과 채팅이 병렬적으로 이루어질수 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//있도록 한다.<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%s \n", message);// 일반적인 메시지일 경우 별다른 프로세싱을 거치지 않고 클라이언트에 출력된다.<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp;&nbsp; if (FD_ISSET(0, &amp;read_fds)) {<br>&nbsp;&nbsp;&nbsp;if(fgets(message, MAXLINE, stdin)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;sprintf(line, "%s %s", name, message);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if (send(s, line, strlen(line), 0) &lt; 0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;printf("Error : Write error on socket.\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;if (strstr(message, escapechar) != NULL ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Good bye.\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(s);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;}<br>&nbsp; &nbsp;&nbsp;} &nbsp;&nbsp;<br>&nbsp;&nbsp;}&nbsp; <br>&nbsp;&nbsp;return 0;<br>}</p><p><br>각종 헤더파일들<br><br>유저리스트 헤더파일<br><br>typedef struct user_node //사용자에 대한 정보를 가지는 구조체<br>{<br>&nbsp;int socketfd; //소켓번호<br>&nbsp;char *user_name; //사용자 닉넴<br>&nbsp;char user_ip[16] ; //사용자의 아이피<br>&nbsp;int room; // 사용자가 속해있는 방( 0 번이면 대기실, 그 외엔 방번호)<br>&nbsp;struct user_node *next; <br>}user_node;</p><p>typedef struct room_node //방에 대한 정보를 가지는 구조체<br>{<br>&nbsp;int room_number;&nbsp; //방번호<br>&nbsp;char *room_name; //방의 이름<br>&nbsp;struct room_node *next; <br>&nbsp;int user_num; //방에 속해있는 유저의 수<br>}room_node;</p><p>user_node *user_head=NULL;<br>room_node *room_head=NULL;<br>int room_number = 1;</p><p>void insert_user_node(int socketfd,char *name,char *ip);<br>void display();<br>void delete_user_node(int socketfd);<br>void delete_room_node(int room_num);<br>int get_user_room(int socketfd);<br>int confirm_room(int room);<br>user_node * get_user_node_by_socketfd(int socketfd);<br>int get_user_number_in_room(int room_num);<br>char** get_user_list(int room_num);</p><p><br>//////////////////////// 사용자 리스트 관련 함수 /////////////////////////////////////////////////</p><p>void insert_user_node(int socketfd,char *name,char *ip){ //사용자를 리스트에 추가하는 함수<br>&nbsp;<br>&nbsp;user_node *new_node;<br>&nbsp;new_node = (user_node *) malloc(sizeof(user_node));<br>&nbsp;new_node-&gt;socketfd = socketfd;<br>&nbsp;new_node-&gt;user_name = (char *)malloc(sizeof(name));<br>&nbsp;strcpy(new_node-&gt;user_ip,ip);<br>&nbsp;new_node-&gt;room = 0;</p><p>&nbsp;strcpy(new_node-&gt;user_name,name);</p><p>&nbsp;new_node-&gt;next = NULL;<br>&nbsp;&nbsp;<br>&nbsp;<br>&nbsp;if(user_head==NULL){ //처음 들어오는 사용자일 경우<br>&nbsp;&nbsp;user_head = new_node;<br>&nbsp;&nbsp;<br>&nbsp;}else{<br>&nbsp;&nbsp;user_node *temp = user_head;<br>&nbsp;&nbsp;while(temp-&gt;next!=NULL){<br>&nbsp;&nbsp;&nbsp;temp = temp-&gt;next;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;temp-&gt;next = new_node;</p><p>&nbsp;}</p><p>}</p><p>&nbsp;</p><p>void display(){&nbsp; //현재 접속한 사용자의 목록을 서버에서 확인 할때 사용하는 함수<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //실제로 사람이 접속할 때마다 출력되게 된다.<br>&nbsp;user_node *temp = user_head;<br>&nbsp;printf("\n-------사용자 목록-----------\n");<br>&nbsp;while(temp!=NULL){<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;printf("%s(%s)-&gt;",temp-&gt;user_name,temp-&gt;user_ip);<br>&nbsp;&nbsp;&nbsp;temp = temp-&gt;next;<br>&nbsp;} <br>&nbsp;printf("\n-------사용자 목록-----------\n");</p><p>}</p><p>&nbsp;</p><p>int get_user_socketfd(int k){&nbsp; //유저 리스트의 특정 번째에 있는 사용자의 소켓번호를 가지고 온다.<br>&nbsp;int i=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 브로드캐스팅 시나 FD_SET 설정시에 사용됨<br>&nbsp;user_node *p = user_head;<br>&nbsp;for(i=0;i&lt;k;i++){<br>&nbsp;&nbsp;p=p-&gt;next;<br>&nbsp;}<br>&nbsp;return p-&gt;socketfd;<br>}</p><p>user_node * get_user_node_by_socketfd(int socketfd){&nbsp; //소켓 번호를 통해 특정 유저의 노드를 얻어온다.<br>&nbsp;user_node *p = user_head;<br>&nbsp;while(p-&gt;socketfd !=socketfd){<br>&nbsp;&nbsp;p = p-&gt;next;<br>&nbsp;}<br>&nbsp;return p;<br>}</p><p>void delete_user_node(int socketfd){&nbsp;&nbsp; //유저가 채팅창을 끌때, 프로그램에서 완전히 나갈때 유저 삭제시 사용</p><p>&nbsp;user_node *temp = user_head;<br>&nbsp;user_node *prev = temp;<br>&nbsp;int i=0;<br>&nbsp;if(get_user_num()==1){&nbsp; //사용자가 마지막 한명일때<br>&nbsp;<br>&nbsp;&nbsp;free(user_head);<br>&nbsp;&nbsp;user_head=NULL;<br>&nbsp;<br>&nbsp;}else{<br>&nbsp;&nbsp;while(temp-&gt;socketfd!=socketfd){&nbsp; <br>&nbsp;&nbsp;&nbsp;if(temp-&gt;next==NULL){<br>&nbsp;&nbsp;&nbsp;&nbsp;temp = temp-&gt;next;<br>&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;prev = temp;<br>&nbsp;&nbsp;&nbsp;temp = temp-&gt;next;<br>&nbsp;&nbsp;}</p><p>&nbsp;</p><p>&nbsp;&nbsp;if(temp==user_head){&nbsp; //맨 첫번째 노드의 사용자를 삭제하려할때<br>&nbsp;&nbsp;&nbsp;user_head = temp-&gt;next;<br>&nbsp;&nbsp;&nbsp;free(temp);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;else if(temp!=NULL){&nbsp; //맨첫번째 노드의 사용자 삭제 외에 모든 경우<br>&nbsp;&nbsp;&nbsp;//printf("%d",temp-&gt;socketfd);<br>&nbsp;&nbsp;&nbsp;prev-&gt;next = temp-&gt;next;<br>&nbsp;&nbsp;&nbsp;free(temp);<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;}else{<br>&nbsp;&nbsp;&nbsp;printf("찾을수 없습니다."); //사용자가 아이디 잘못 입력시에 <br>&nbsp;&nbsp;}<br>&nbsp;}</p><p>}</p><p>int get_user_num(){&nbsp; //사용자의 총 숫자를 리턴.<br>&nbsp;user_node *p = user_head;<br>&nbsp;int i=1;<br>&nbsp;if(p!=NULL){<br>&nbsp;&nbsp;while(p-&gt;next!=NULL){<br>&nbsp;&nbsp;&nbsp;p = p-&gt;next;<br>&nbsp;&nbsp;&nbsp;i++;<br>&nbsp;&nbsp;}</p><p>&nbsp;&nbsp;return i;<br>&nbsp;}else{<br>&nbsp;&nbsp;return 0;<br>&nbsp;}</p><p>}</p><p>int get_user_room(int socketfd){&nbsp; //특정 소켓번호를 가진 사용자가 어느 방에 있는지 알아낼때 사용됨<br>&nbsp;user_node *p = user_head;<br>&nbsp;while(p-&gt;socketfd !=socketfd){<br>&nbsp;&nbsp;p = p-&gt;next;<br>&nbsp;}<br>&nbsp;if(p==NULL)<br>&nbsp;&nbsp;return 0;<br>&nbsp;return p-&gt;room;&nbsp; //방번호 반환<br>}</p><p>int get_sockerfd_by_user_name(char *name){&nbsp; //사용자의 닉네임으로 사용자의 소켓번호를 얻어온다.<br>&nbsp;user_node *p = user_head;<br>&nbsp;while(p!=NULL){<br>&nbsp;&nbsp;if(strcmp(p-&gt;user_name,name)==0){<br>&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;p = p-&gt;next;<br>&nbsp;}</p><p>&nbsp;if(p==NULL)<br>&nbsp;&nbsp;return 0; //없음<br>&nbsp;else<br>&nbsp;&nbsp;return p-&gt;socketfd;<br>}<br>char * get_user_name_by_socketfd(int socketfd){ //사용자의 소켓번호로 사용자의 닉네임을 얻어온다.<br>&nbsp;user_node *p = user_head;<br>&nbsp;while(p!=NULL){<br>&nbsp;&nbsp;if(p-&gt;socketfd==socketfd)<br>&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;p=p-&gt;next;<br>&nbsp;}<br>&nbsp;return p-&gt;user_name;<br>}</p><p>char * get_user_ip_by_socketfd(int socketfd){ //사용자의 소켓번호로 사용자의 아이피를 얻어온다.<br>&nbsp;user_node *p = user_head;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //파일 전송시 사용됨<br>&nbsp;while(p!=NULL){<br>&nbsp;&nbsp;if(p-&gt;socketfd==socketfd)<br>&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;p=p-&gt;next;<br>&nbsp;}<br>&nbsp;return p-&gt;user_ip;</p><p>}</p><p>char *get_user_ip_by_user_name(char *user_name){ //사용자의 닉네임으로 사용자의 아이피를 얻어온다.<br>&nbsp;user_node *p = user_head;<br>&nbsp;while(p!=NULL){<br>&nbsp;&nbsp;if( strcmp(p-&gt;user_name,user_name)==0)<br>&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;p=p-&gt;next;<br>&nbsp;}</p><p>&nbsp;return p-&gt;user_ip;<br>}</p><p>///////////////////////////사용자 리스트 관련 함수 끝/////////////////////////<br>/////////////////////////// 방 리스트 관련 함수 시작 /////////////////////////<br>int insert_room_node(char *name){&nbsp; // 방개설시 사용됨.<br>&nbsp;room_node *new_node;<br>&nbsp;new_node = (room_node *) malloc(sizeof(room_node)); <br>&nbsp;new_node-&gt;user_num = 1; //개설 되자마자 입장 되므로<br>&nbsp;new_node-&gt;room_name = (char *)malloc(sizeof(name));<br>&nbsp;strcpy(new_node-&gt;room_name,name);<br>&nbsp;new_node-&gt;room_number = room_number++;<br>&nbsp;new_node-&gt;next=NULL;</p><p>&nbsp;if(room_head==NULL){<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;room_head = new_node;<br>&nbsp;}else{<br>&nbsp;&nbsp;room_node *temp = room_head;<br>&nbsp;&nbsp;while(temp-&gt;next!=NULL){<br>&nbsp;&nbsp;&nbsp;temp = temp-&gt;next;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;temp-&gt;next = new_node;<br>&nbsp;}<br>&nbsp;<br>&nbsp;return new_node-&gt;room_number;<br>}</p><p><br>void room_display(){&nbsp; //방 목록을 서버에서 보려고 할때 사용된다.<br>&nbsp;<br>&nbsp;room_node *temp = room_head;</p><p>&nbsp;printf("\n-------방 목록-----------\n");<br>&nbsp;while(temp!=NULL){<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;printf("방 번호 : %d | 방제목 : %s |&nbsp; 인원수 %d\n",temp-&gt;room_number,temp-&gt;room_name,temp-&gt;user_num);<br>&nbsp;&nbsp;&nbsp;temp = temp-&gt;next;<br>&nbsp;} <br>&nbsp;printf("\n-------방 목록-----------\n");</p><p>}</p><p>int get_room_num(){&nbsp; //존재하는 방의 개수를 반환한다.<br>&nbsp;room_node *p = room_head;<br>&nbsp;int i=1;<br>&nbsp;if(p!=NULL){<br>&nbsp;&nbsp;while(p-&gt;next!=NULL){<br>&nbsp;&nbsp;&nbsp;p = p-&gt;next;<br>&nbsp;&nbsp;&nbsp;i++;<br>&nbsp;&nbsp;}<br>&nbsp;}else{<br>&nbsp;&nbsp;return 0;<br>&nbsp;}<br>&nbsp;return i;<br>}</p><p>void delete_room_node(int room_num){ //방을 삭제하려할때 호출된다.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//사용자가 임의로 방을 삭제하는 것은 안되므로 마지막 사용자가 나갈때<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//자동으로 호출된다.<br>&nbsp;room_node *temp = room_head;<br>&nbsp;room_node *prev = temp;<br>&nbsp;int i=0;</p><p>&nbsp;if(confirm_room(room_num)==0){<br>&nbsp;&nbsp;printf("방을 찾을수 없습니다.");<br>&nbsp;}<br>&nbsp;if(get_room_num()==1){<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;free(room_head);<br>&nbsp;&nbsp;room_head=NULL;<br>&nbsp;<br>&nbsp;}else{<br>&nbsp;&nbsp;while(temp-&gt;room_number!=room_num){<br>&nbsp;&nbsp;&nbsp;if(temp-&gt;next==NULL){<br>&nbsp;&nbsp;&nbsp;&nbsp;temp = temp-&gt;next;<br>&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;prev = temp;<br>&nbsp;&nbsp;&nbsp;temp = temp-&gt;next;<br>&nbsp;&nbsp;}</p><p>&nbsp;</p><p>&nbsp;&nbsp;if(temp==room_head){<br>&nbsp;&nbsp;&nbsp;room_head = temp-&gt;next;<br>&nbsp;&nbsp;&nbsp;free(temp);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;else if(temp!=NULL){<br>&nbsp;&nbsp;&nbsp;//printf("%d",temp-&gt;socketfd);<br>&nbsp;&nbsp;&nbsp;prev-&gt;next = temp-&gt;next;<br>&nbsp;&nbsp;&nbsp;free(temp);<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;}else{<br>&nbsp;&nbsp;&nbsp;printf("찾을수 없습니다.");<br>&nbsp;&nbsp;}<br>&nbsp;}</p><p>}</p><p>int confirm_room(int room){&nbsp; //방이 실제로 존재하는지 확인한다.<br>&nbsp;room_node *temp = room_head;<br>&nbsp;int i=0;<br>&nbsp;while(temp!=NULL){<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;if(temp-&gt;room_number==room)<br>&nbsp;&nbsp;&nbsp;i=1;</p><p>&nbsp;&nbsp;temp= temp-&gt;next;<br>&nbsp;}<br>&nbsp;return i;</p><p>&nbsp;</p><p>}</p><p>char *room_info(){&nbsp; //사용자가 대화방에 대한 정보를 보려할때 제공하기 위해 방에 대한 정보를 문자열로 반환한다<br>&nbsp;char *info,*temp_char,**list=NULL;<br>&nbsp;info = (char*) malloc(2048);<br>&nbsp;temp_char = (char*) malloc(1024);<br>&nbsp;<br>&nbsp;room_node *temp = room_head;<br>&nbsp;int j=0,i=0;</p><p>&nbsp;//printf("room num : %d",get_room_num());<br>&nbsp;for(j=0;j&lt;get_room_num();j++){<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;sprintf(temp_char,"방 번호 %d&nbsp; 방제목 : %s 인원수 %d\n유저 목록 : ", temp-&gt;room_number,temp-&gt;room_name,temp-&gt;user_num);</p><p>&nbsp;&nbsp;list = get_user_list(temp-&gt;room_number);<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;if(j==0)<br>&nbsp;&nbsp;&nbsp;strcpy(info,temp_char);</p><p>&nbsp;&nbsp;else{<br>&nbsp;&nbsp;&nbsp;strcat(info,temp_char);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;for(i=0;i&lt;temp-&gt;user_num;i++){<br>&nbsp;&nbsp;&nbsp;strcat(info,list[i]);<br>&nbsp;&nbsp;&nbsp;strcat(info,"\t");<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;strcat(info,"\n");<br>&nbsp;&nbsp;temp = temp-&gt;next;</p><p>&nbsp;}<br>&nbsp;<br>&nbsp;<br>&nbsp;return info;<br>}</p><p>&nbsp;</p><p>int user_out_of_room(int room_num,int socketfd){&nbsp; //사용자가 대화방 밖으로 나가려할때 처리를 맡는다.<br>&nbsp;room_node *temp = room_head;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //여기서 대화방의 마지막 사용자일때 delete_room_node가 호출되어 방을<br>&nbsp;if(socketfd!=0){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //삭제한다.<br>&nbsp;&nbsp;user_node *user_temp =&nbsp; get_user_node_by_socketfd(socketfd);<br>&nbsp;&nbsp;user_temp-&gt;room =0;<br>&nbsp;}<br>&nbsp;while(temp-&gt;room_number!=room_num){<br>&nbsp;&nbsp;temp = temp-&gt;next;<br>&nbsp;}<br>&nbsp;<br>&nbsp;temp-&gt;user_num--;<br>&nbsp;if(temp-&gt;user_num==0){<br>&nbsp;&nbsp;delete_room_node(room_num);<br>&nbsp;}<br>&nbsp;return temp-&gt;user_num;<br>}</p><p>int user_join_room(int room_num,int socketfd){&nbsp; //사용자가 방에 입장하려 할때 사용자의 정보와 방에 대한 정보를 <br>&nbsp;//특정 방에 사용자 입장&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 변경하여 사용자가 대화방으로의 입실을 처리한다.<br>&nbsp;room_node *room_temp = room_head;<br>&nbsp;user_node *user_temp =&nbsp; get_user_node_by_socketfd(socketfd);<br>&nbsp;if(room_head==NULL)<br>&nbsp;&nbsp;return 0;<br>&nbsp;while(room_temp-&gt;room_number!=room_num){<br>&nbsp;&nbsp;if(room_temp-&gt;next==NULL){<br>&nbsp;&nbsp;&nbsp;return 0;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;room_temp = room_temp-&gt;next;<br>&nbsp;} //사용자가 원하는 노드를 찾는다. <br>&nbsp;<br>&nbsp;user_temp-&gt;room = room_num;<br>&nbsp;room_temp-&gt;user_num++;</p><p>&nbsp;return 1;<br>}</p><p>&nbsp;</p><p>char** get_user_list(int room_num){&nbsp;&nbsp;&nbsp; //대화방 사용자의 목록을 출력. <br>&nbsp;user_node *temp = user_head;<br>&nbsp;char **list;<br>&nbsp;int i=0;<br>//&nbsp;array = (int **)malloc(sizeof(int) *a);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;list = (char **)malloc(sizeof(char)*get_user_number_in_room(room_num));<br>&nbsp;<br>&nbsp;while(temp!=NULL){<br>&nbsp;&nbsp;if(temp-&gt;room==room_num){<br>&nbsp;&nbsp;&nbsp;list[i] = (char *)malloc(strlen(temp-&gt;user_name));<br>&nbsp;&nbsp;&nbsp;strcpy(list[i++],temp-&gt;user_name);<br>&nbsp;&nbsp;&nbsp;//printf("\n%s\n",list[i++]);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;temp = temp-&gt;next;<br>&nbsp;}</p><p>&nbsp;return list;</p><p>}<br>char** get_user_list_all(){&nbsp; //총 접속한 사용자의 목록을 출력<br>&nbsp;user_node *temp = user_head;<br>&nbsp;int total = get_user_num();<br>&nbsp;char **list;<br>&nbsp;int i=0;<br>&nbsp;list =(char **)malloc(sizeof(char)*total);<br>&nbsp;<br>&nbsp;while(temp!=NULL){<br>&nbsp;&nbsp;list[i] =(char *)malloc(strlen( temp-&gt;user_name));<br>&nbsp;&nbsp;strcpy(list[i++],temp-&gt;user_name);<br>&nbsp;&nbsp;temp=temp-&gt;next;<br>&nbsp;}<br>}</p><p>int get_user_number_in_room(int room_num){&nbsp; //대화방의 사용자수를 반환한다.<br>&nbsp;<br>&nbsp;room_node *temp = room_head;<br>&nbsp;while(temp-&gt;room_number != room_num){<br>&nbsp;&nbsp;temp = temp-&gt;next;<br>&nbsp;}<br>&nbsp;return temp-&gt;user_num;<br>}</p><p>&nbsp;</p><p>마이 유틸 헤더파일<br><br>char* mid(char* str,int a,int b) //문자열 자를때 사용. 특정 부분을 원하는 만큼 자를수 있다.<br>{<br>&nbsp;&nbsp;&nbsp; int i,midcnt=0;<br>&nbsp;&nbsp;&nbsp; int strl=strlen(str);<br>&nbsp;char* pstr= (char *)malloc(strl);<br>&nbsp;&nbsp;&nbsp; strcpy(pstr,str);<br>&nbsp;&nbsp;&nbsp; if( a &gt; strl || a+b&gt; strl+1 || a == 0 || b == 0) // a,b 값 체크<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( a==0 || b==0 )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(" a or b is not Zero...\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Invalid parameter a or b check...");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);&nbsp;&nbsp;&nbsp; // 강제 종료 <br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; // pstr 처리 부분.<br>&nbsp;&nbsp;&nbsp; for ( i = a-1 ; i &lt; a-1+b ; i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pstr[midcnt++] = pstr[i];<br>&nbsp;&nbsp;&nbsp; pstr[midcnt]='\0';<br>&nbsp;<br>&nbsp;return pstr;<br>}<br><br><br>트랜스퍼 헤더 파일<br><br><br>#define port 7979<br>#define max 5<br>#define bufsize 1024</p><p>//쓰레드에서 쓰이기 때문에 모두 void * 임.<br>void recv_thread(char *ip,char *filename){ //클라이언트가 서버에 접속하여 다운 받는 방식. <br>&nbsp;struct sockaddr_in saddr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;int sockfd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;char buf[bufsize]={0};<br>&nbsp;int fd;<br>&nbsp;int cnt;<br>&nbsp;memset(&amp;saddr, 0, sizeof(saddr));<br>&nbsp;saddr.sin_family = AF_INET;<br>&nbsp;saddr.sin_addr.s_addr = inet_addr(ip);<br>&nbsp;saddr.sin_port = htons(port);</p><p>&nbsp;sockfd=socket(AF_INET, SOCK_STREAM, 0);</p><p>&nbsp;connect(sockfd, (struct sockaddr*)&amp;saddr, sizeof(saddr));</p><p>&nbsp;fd = open(filename, O_WRONLY| O_CREAT| O_TRUNC, 666);<br>&nbsp;printf("파일을 수신합니다.");<br>&nbsp;while((cnt=recv(sockfd, buf, bufsize, 0)) &gt; 0 ){<br>&nbsp;&nbsp;printf("%s",buf);<br>&nbsp;&nbsp;write(fd, buf, cnt);<br>&nbsp;}<br>&nbsp;close(fd);<br>&nbsp;close(sockfd);<br>&nbsp;<br>}</p><p>void send_thread(char *filename){<br>&nbsp;struct sockaddr_in saddr, caddr;<br>&nbsp;int sockfd, newsockfd;<br>&nbsp;char buf[bufsize];<br>&nbsp;int fd;<br>&nbsp;int cnt, cli_len;</p><p>&nbsp;memset(&amp;saddr, 0, sizeof(saddr));<br>&nbsp;saddr.sin_family = AF_INET;<br>&nbsp;saddr.sin_addr.s_addr = htonl(INADDR_ANY);<br>&nbsp;saddr.sin_port = htons(port);</p><p>&nbsp;sockfd = socket(AF_INET,SOCK_STREAM,0);<br>&nbsp;bind(sockfd, (struct sockaddr*)&amp;saddr, sizeof(saddr));</p><p>&nbsp;listen(sockfd, max);</p><p>&nbsp;//while(1){<br>&nbsp;&nbsp;printf("파일을 전송합니다.");<br>&nbsp;&nbsp;cli_len = sizeof(caddr);<br>&nbsp;&nbsp;newsockfd=accept(sockfd, (struct sockaddr*)&amp;caddr, &amp;cli_len);</p><p>&nbsp;&nbsp;fd = open(filename, O_RDONLY);<br>&nbsp;&nbsp;while(read(fd, buf, bufsize) &gt; 0){<br>&nbsp;&nbsp;&nbsp;send(newsockfd, buf, strlen(buf),0);<br>&nbsp;&nbsp;}</p><p>&nbsp;&nbsp;close(newsockfd);<br>&nbsp;//}</p><p>}<br><br></p><p><br><br><br><br><br>&nbsp;</p><br/><br/>tag : <a href="/tag/네트워크" rel="tag">네트워크</a>,&nbsp;<a href="/tag/소켓" rel="tag">소켓</a>,&nbsp;<a href="/tag/메신져" rel="tag">메신져</a>,&nbsp;<a href="/tag/멀티채팅" rel="tag">멀티채팅</a>,&nbsp;<a href="/tag/클라이언트" rel="tag">클라이언트</a>,&nbsp;<a href="/tag/서버" rel="tag">서버</a>			 ]]> 
		</description>
		<category>공부하는 이야기</category>
		<category>네트워크</category>
		<category>소켓</category>
		<category>메신져</category>
		<category>멀티채팅</category>
		<category>클라이언트</category>
		<category>서버</category>

		<comments>http://knulpk.egloos.com/1713149#comments</comments>
		<pubDate>Sun, 18 May 2008 21:22:57 GMT</pubDate>
		<dc:creator>nonnous</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 포트폴리오. ]]> </title>
		<link>http://knulpk.egloos.com/1660444</link>
		<guid>http://knulpk.egloos.com/1660444</guid>
		<description>
			<![CDATA[ 
  <p><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds9.egloos.com/pds/200805/01/27/e0039327_48189744452df.jpg" width="500" height="392.405063291" onclick="Control.Modal.openDialog(this, event, 'http://pds9.egloos.com/pds/200805/01/27/e0039327_48189744452df.jpg');" /></div>익살스러운 곰을 이미지화.<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds7.egloos.com/pds/200805/01/27/e0039327_48189744b102e.jpg" width="500" height="404.512067156" onclick="Control.Modal.openDialog(this, event, 'http://pds7.egloos.com/pds/200805/01/27/e0039327_48189744b102e.jpg');" /></div><br>로고<br><br><br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds8.egloos.com/pds/200805/01/27/e0039327_48189745a6f40.jpg" width="500" height="413.141314131" onclick="Control.Modal.openDialog(this, event, 'http://pds8.egloos.com/pds/200805/01/27/e0039327_48189745a6f40.jpg');" /></div><br>송파구 문정동의 이혜영님(30)<br><br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds9.egloos.com/pds/200805/01/27/e0039327_48189773369ef.jpg" width="500" height="446.064139942" onclick="Control.Modal.openDialog(this, event, 'http://pds9.egloos.com/pds/200805/01/27/e0039327_48189773369ef.jpg');" /></div></p><br>안양시 만안구의 권준회씨 (30)<br/><br/>tag : <a href="/tag/캐리커쳐" rel="tag">캐리커쳐</a>,&nbsp;<a href="/tag/로고" rel="tag">로고</a>,&nbsp;<a href="/tag/이미지" rel="tag">이미지</a>			 ]]> 
		</description>
		<category>캐리커쳐</category>
		<category>로고</category>
		<category>이미지</category>

		<comments>http://knulpk.egloos.com/1660444#comments</comments>
		<pubDate>Wed, 30 Apr 2008 16:03:44 GMT</pubDate>
		<dc:creator>nonnous</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 집에 오는길. ]]> </title>
		<link>http://knulpk.egloos.com/1622214</link>
		<guid>http://knulpk.egloos.com/1622214</guid>
		<description>
			<![CDATA[ 
  모임에서 헤어지고 홀로 집에 오는길.<br><br>가만히 마음을 추스려 한발한발 집으로 걸어가본다.<br><br>발자욱 떼일때마다 들려오는 추억의 메아리.<br><br>한발씩 커져가는 외로움의 덩어리.<br><br>하나씩 글썽거리는 주책맞은 내 눈망울.<br><br>이렇게 그렇게 집에까지 겨우겨우<br><br>대문 앞에까지 들어선 발걸음.<br><br>누구도 모르게 다리에 힘이풀려<br><br>누구도 모르게 마음에 힘이 풀려<br><br>그대로 주저앉아 흐느껴 울어본다.<br><br>이렇게 그렇게 눈물을 흘리고야<br><br>집으로 가뿐이 들어가 잘수있다.<br><br><br><br>			 ]]> 
		</description>
		<category>하기싫은 이야기</category>

		<comments>http://knulpk.egloos.com/1622214#comments</comments>
		<pubDate>Thu, 17 Apr 2008 16:44:36 GMT</pubDate>
		<dc:creator>nonnous</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 뭔가 할만한게 없어 ]]> </title>
		<link>http://knulpk.egloos.com/1599019</link>
		<guid>http://knulpk.egloos.com/1599019</guid>
		<description>
			<![CDATA[ 
  예전에는 그 무언가가, 아니 그 무언가든간에 하나 잡으면 상당히 열심히 보곤 했는데<br><br>이제는 그 무엇하나 흥미가 생기지 않아. 무언가 나에게 빠져있어. 뭘까????<br><br>목표도 없고 사는게 재미도 없고 성취욕도 일욕심도 시들해져가<br><br>술을 마시거나 비만 오면 감정이 북받쳐 올라와 또 쓸데없이 전화기만 깨작거리기나 하고<br><br>사소한 일에 신경질 나고 신경이 곤두서 있곤 하지.<br><br>그러면서 나 자신을 돌볼 생각은 하지 않고 <br><br>세상이, 그리고 내 자신이 내것 같지가 않아. 뭔가 멍해있어.<br><br>그저 쥐어주는 돈 몇백에 헤헤거리기도 지쳤고...<br><br>혼자 다 살은 느낌이야. 이제 뭘 해야하나..???<br/><br/>tag : <a href="/tag/푸념" rel="tag">푸념</a>,&nbsp;<a href="/tag/넋두리" rel="tag">넋두리</a>			 ]]> 
		</description>
		<category>그냥그런 이야기</category>
		<category>푸념</category>
		<category>넋두리</category>

		<comments>http://knulpk.egloos.com/1599019#comments</comments>
		<pubDate>Wed, 09 Apr 2008 20:06:58 GMT</pubDate>
		<dc:creator>nonnous</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 생각을 잘못한 사람의 전형적인 표본. 김성주 前 아나운서 ]]> </title>
		<link>http://knulpk.egloos.com/1564422</link>
		<guid>http://knulpk.egloos.com/1564422</guid>
		<description>
			<![CDATA[ 
  <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds9.egloos.com/pds/200803/30/27/e0039327_47ee72f11ad75.jpg" width="318" height="602" onclick="Control.Modal.openDialog(this, event, 'http://pds9.egloos.com/pds/200803/30/27/e0039327_47ee72f11ad75.jpg');" /></div><br>작년 초, 마봉춘 신입 아나운서였던 김성주씨는 돈의 유혹을 받아 프리선언을 하였다. 그당시에 마봉춘 수뇌부들의 불편함 심기를 <br><br>감수하면서까지 유유히 사라졌던 그의 소식을 접할길이 없어 좀 실망스러웠다. 하지만.. 잘못된선택으로 인해서 피해를 보게 될<br><br>것이라 예측을 했던바 기억에서 점점 사라져가는, 당시 좀 재미있었던 수명짧던 아나운서로 어디선가 박혀놓았다.<br><br>현재 마봉춘의 예능 프로중에 시청률도 나오지 않는 프로그램의 메인(?)격으로 근 1년여만에 다시 모습을 보이긴 하나<br><br>재미도 없고 뭔가 살아야겠다는 눈빛으로 안쓰럽게 진행하는 그를 보면서 비슷햇던 시기에 상당히 이사람을 좋아했던 잉간을<br><br>떠올리게 되었다.&nbsp; 김성주씨를 보면서 떠올렸던 그 분 또한 아둥바둥 살아가고 있겠지..&nbsp; 가여운 사람들...<br><br>씁쓸한 미소만 지어진다. 눈앞의 돈이 그렇게 대의를 져버릴정도로 유혹이 크나보다. <br/><br/>tag : <a href="/tag/아나운서" rel="tag">아나운서</a>,&nbsp;<a href="/tag/김성주" rel="tag">김성주</a>,&nbsp;<a href="/tag/예능" rel="tag">예능</a>,&nbsp;<a href="/tag/마봉춘" rel="tag">마봉춘</a>,&nbsp;<a href="/tag/불쌍하다" rel="tag">불쌍하다</a>,&nbsp;<a href="/tag/돈의유혹" rel="tag">돈의유혹</a>			 ]]> 
		</description>
		<category>하기싫은 이야기</category>
		<category>아나운서</category>
		<category>김성주</category>
		<category>예능</category>
		<category>마봉춘</category>
		<category>불쌍하다</category>
		<category>돈의유혹</category>

		<comments>http://knulpk.egloos.com/1564422#comments</comments>
		<pubDate>Sat, 29 Mar 2008 17:00:57 GMT</pubDate>
		<dc:creator>nonnous</dc:creator>
	</item>
</channel>
</rss>
