<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Liby's Blog</title>
	<atom:link href="http://www.imliby.com/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.imliby.com</link>
	<description>　汝鬼耶,抑人耶?</description>
	<lastBuildDate>Sun, 20 May 2012 02:03:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Linux下串口GPS设备的GPRMC数据处理</title>
		<link>http://www.imliby.com/index.php/gprmc-data-processing-of-serial-gps-device-under-linux/</link>
		<comments>http://www.imliby.com/index.php/gprmc-data-processing-of-serial-gps-device-under-linux/#comments</comments>
		<pubDate>Sun, 20 May 2012 02:03:23 +0000</pubDate>
		<dc:creator>liby</dc:creator>
				<category><![CDATA[技事巧事]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.imliby.com/?p=784</guid>
		<description><![CDATA[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include&lt;stdio.h&gt;</span>
<span style="color: #339933;">#include&lt;stdlib.h&gt;</span>
<span style="color: #339933;">#include&lt;string.h&gt;</span>
<span style="color: #339933;">#include&lt;sys/types.h&gt;</span>
<span style="color: #339933;">#include&lt;sys/stat.h&gt;</span>
<span style="color: #339933;">#include&lt;fcntl.h&gt;</span>
<span style="color: #339933;">#include&lt;unistd.h&gt;</span>
<span style="color: #339933;">#include&lt;termios.h&gt;</span>
<span style="color: #339933;">#include&lt;string.h&gt;</span>
&nbsp;
<span style="color: #993333;">struct</span> gps_info
<span style="color: #009900;">&#123;</span>
       	<span style="color: #993333;">double</span> utc_time<span style="color: #339933;">;</span>
        <span style="color: #993333;">char</span> status<span style="color: #339933;">;</span>
        <span style="color: #993333;">double</span> latitude_value<span style="color: #339933;">;</span>
        <span style="color: #993333;">char</span> latitude<span style="color: #339933;">;</span>
        <span style="color: #993333;">double</span> longtitude_value<span style="color: #339933;">;</span>
        <span style="color: #993333;">char</span> longtitude<span style="color: #339933;">;</span>
        <span style="color: #993333;">double</span> utc_data<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>rmc_info<span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//GPRMC数据</span>
&nbsp;
<span style="color: #993333;">int</span> set_opt<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> fd<span style="color: #339933;">,</span><span style="color: #993333;">int</span> nSpeed<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> nBits<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> nEvent<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> nStop<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">struct</span> termios newtio<span style="color: #339933;">,</span>oldtio<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span>  <span style="color: #009900;">&#40;</span> tcgetattr<span style="color: #009900;">&#40;</span> fd<span style="color: #339933;">,&amp;</span>oldtio<span style="color: #009900;">&#41;</span>  <span style="color: #339933;">!=</span>  <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
		perror<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SetupSerial 1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	bzero<span style="color: #009900;">&#40;</span> <span style="color: #339933;">&amp;</span>newtio<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span> newtio <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	newtio.<span style="color: #202020;">c_cflag</span>  <span style="color: #339933;">|=</span>  CLOCAL <span style="color: #339933;">|</span> CREAD<span style="color: #339933;">;</span>
	newtio.<span style="color: #202020;">c_cflag</span> <span style="color: #339933;">&amp;=</span> ~CSIZE<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span> nBits <span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">7</span><span style="color: #339933;">:</span>
		newtio.<span style="color: #202020;">c_cflag</span> <span style="color: #339933;">|=</span> CS7<span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">8</span><span style="color: #339933;">:</span>
		newtio.<span style="color: #202020;">c_cflag</span> <span style="color: #339933;">|=</span> CS8<span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span> nEvent <span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'O'</span><span style="color: #339933;">:</span>
		newtio.<span style="color: #202020;">c_cflag</span> <span style="color: #339933;">|=</span> PARENB<span style="color: #339933;">;</span>
		newtio.<span style="color: #202020;">c_cflag</span> <span style="color: #339933;">|=</span> PARODD<span style="color: #339933;">;</span>
		newtio.<span style="color: #202020;">c_iflag</span> <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span>INPCK <span style="color: #339933;">|</span> ISTRIP<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'E'</span><span style="color: #339933;">:</span> 
		newtio.<span style="color: #202020;">c_iflag</span> <span style="color: #339933;">|=</span> <span style="color: #009900;">&#40;</span>INPCK <span style="color: #339933;">|</span> ISTRIP<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		newtio.<span style="color: #202020;">c_cflag</span> <span style="color: #339933;">|=</span> PARENB<span style="color: #339933;">;</span>
		newtio.<span style="color: #202020;">c_cflag</span> <span style="color: #339933;">&amp;=</span> ~PARODD<span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'N'</span><span style="color: #339933;">:</span>  
		newtio.<span style="color: #202020;">c_cflag</span> <span style="color: #339933;">&amp;=</span> ~PARENB<span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span> nSpeed <span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">2400</span><span style="color: #339933;">:</span>
		cfsetispeed<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>newtio<span style="color: #339933;">,</span> B2400<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		cfsetospeed<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>newtio<span style="color: #339933;">,</span> B2400<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">4800</span><span style="color: #339933;">:</span>
		cfsetispeed<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>newtio<span style="color: #339933;">,</span> B4800<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		cfsetospeed<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>newtio<span style="color: #339933;">,</span> B4800<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">9600</span><span style="color: #339933;">:</span>
		cfsetispeed<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>newtio<span style="color: #339933;">,</span> B9600<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		cfsetospeed<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>newtio<span style="color: #339933;">,</span> B9600<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">115200</span><span style="color: #339933;">:</span>
		cfsetispeed<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>newtio<span style="color: #339933;">,</span> B115200<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		cfsetospeed<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>newtio<span style="color: #339933;">,</span> B115200<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">460800</span><span style="color: #339933;">:</span>
		cfsetispeed<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>newtio<span style="color: #339933;">,</span> B460800<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		cfsetospeed<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>newtio<span style="color: #339933;">,</span> B460800<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
		cfsetispeed<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>newtio<span style="color: #339933;">,</span> B9600<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		cfsetospeed<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>newtio<span style="color: #339933;">,</span> B9600<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> nStop <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span> <span style="color: #009900;">&#41;</span>
		newtio.<span style="color: #202020;">c_cflag</span> <span style="color: #339933;">&amp;=</span>  ~CSTOPB<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> nStop <span style="color: #339933;">==</span> <span style="color: #0000dd;">2</span> <span style="color: #009900;">&#41;</span>
	newtio.<span style="color: #202020;">c_cflag</span> <span style="color: #339933;">|=</span>  CSTOPB<span style="color: #339933;">;</span>
	newtio.<span style="color: #202020;">c_cc</span><span style="color: #009900;">&#91;</span>VTIME<span style="color: #009900;">&#93;</span>  <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//重要</span>
	newtio.<span style="color: #202020;">c_cc</span><span style="color: #009900;">&#91;</span>VMIN<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">100</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//返回的最小值  重要</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/*	newtio.c_cc[VTIME] = 30;    //30 seconds
    newtio.c_cc[VMIN] = 100;     //least bytes
    newtio.c_lflag &amp;= ~(ICANON|ECHO|ECHOE|ISIG);//非规范模式
&nbsp;
	newtio.c_cc[VTIME] = 30;    //30 seconds
	newtio.c_cc[VTIME] = 3;    //3 seconds
*/</span>
	tcflush<span style="color: #009900;">&#40;</span>fd<span style="color: #339933;">,</span>TCIFLUSH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>tcsetattr<span style="color: #009900;">&#40;</span>fd<span style="color: #339933;">,</span>TCSANOW<span style="color: #339933;">,&amp;</span>newtio<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">!=</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		perror<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;com set error&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;set done!<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
	<span style="color: #993333;">int</span> fd_gps<span style="color: #339933;">;</span>
	<span style="color: #993333;">int</span> set_gps<span style="color: #339933;">;</span>
	<span style="color: #993333;">int</span> nread_gps<span style="color: #339933;">;</span>
	<span style="color: #993333;">char</span> tmp<span style="color: #339933;">;</span>
	<span style="color: #993333;">char</span> <span style="color: #339933;">*</span>buff_gps<span style="color: #339933;">;</span>
	<span style="color: #993333;">char</span> <span style="color: #339933;">*</span>rmc_str<span style="color: #339933;">;</span>
&nbsp;
	fd_gps<span style="color: #339933;">=</span>open<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;/dev/ttyUSB0&quot;</span><span style="color: #339933;">,</span> O_RDWR<span style="color: #339933;">|</span>O_NONBLOCK<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//打开串口</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>fd_gps<span style="color: #339933;">==-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
		exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	set_gps<span style="color: #339933;">=</span>set_opt<span style="color: #009900;">&#40;</span>fd_gps<span style="color: #339933;">,</span><span style="color: #0000dd;">4800</span><span style="color: #339933;">,</span><span style="color: #0000dd;">8</span><span style="color: #339933;">,</span><span style="color: #ff0000;">'N'</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//设置串口属性</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>set_gps<span style="color: #339933;">==-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
		exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		memset<span style="color: #009900;">&#40;</span>buff_gps<span style="color: #339933;">,</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span><span style="color: #0000dd;">512</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		nread_gps<span style="color: #339933;">=</span>read<span style="color: #009900;">&#40;</span>fd_gps<span style="color: #339933;">,</span>buff_gps<span style="color: #339933;">,</span><span style="color: #0000dd;">512</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//读串口</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>buff_gps<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>nread_gps<span style="color: #339933;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>rmc_str <span style="color: #339933;">=</span> strstr<span style="color: #009900;">&#40;</span>buff_gps<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;$GPRMC&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">!=</span> NULL<span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span>strlen<span style="color: #009900;">&#40;</span>rmc_str<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
						<span style="color: #009900;">&#123;</span>
							<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>rmc_str<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #009900;">&#41;</span>
								<span style="color: #009900;">&#123;</span>
								rmc_str<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//replace ‘\n’ with null</span>
								<span style="color: #009900;">&#125;</span>
						 <span style="color: #009900;">&#125;</span>
<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>rmc_str<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span><span style="color: #666666; font-style: italic;">//end of if</span>
		<span style="color: #666666; font-style: italic;">//$GPRMC,030111.085,V,0000.0000,N,00000.0000,E,,0.00,150209,,,N*68</span>
		<span style="color: #666666; font-style: italic;">//E,123456,0.00, 逗号中间有数据</span>
		<span style="color: #666666; font-style: italic;">//sscanf(rmc_str,&quot;%*[^,],%lf,%c,%lf,%c,%lf,%c,%*[^,],%*[^,],%lf&quot;,&amp;rmc_info.utc_time,&amp;rmc_info.status,&amp;rmc_info.latitude_value,&amp;rmc_info.latitude,&amp;rmc_info.longtitude_value,&amp;rmc_info.longtitude,&amp;rmc_info.utc_data);</span>
		<span style="color: #666666; font-style: italic;">//E,,0.00, 逗号中间没有数据</span>
&nbsp;
&nbsp;
sscanf<span style="color: #009900;">&#40;</span>rmc_str<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;%*[^,],%lf,%c,%lf,%c,%lf,%c,,%*[^,],%lf&quot;</span><span style="color: #339933;">,&amp;</span>rmc_info.<span style="color: #202020;">utc_time</span><span style="color: #339933;">,&amp;</span>rmc_info.<span style="color: #202020;">status</span><span style="color: #339933;">,&amp;</span>rmc_info.<span style="color: #202020;">latitude_value</span><span style="color: #339933;">,&amp;</span>rmc_info.<span style="color: #202020;">latitude</span><span style="color: #339933;">,&amp;</span>rmc_info.<span style="color: #202020;">longtitude_value</span><span style="color: #339933;">,&amp;</span>rmc_info.<span style="color: #202020;">longtitude</span><span style="color: #339933;">,&amp;</span>rmc_info.<span style="color: #202020;">utc_data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;utc time :%lf<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>rmc_info.<span style="color: #202020;">utc_time</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;status :%c<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>rmc_info.<span style="color: #202020;">status</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;latitude :%c<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>rmc_info.<span style="color: #202020;">latitude</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;latitude value: %lf<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>rmc_info.<span style="color: #202020;">latitude_value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;longtitude :%c<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>rmc_info.<span style="color: #202020;">longtitude</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;longtitude value: %lf<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>rmc_info.<span style="color: #202020;">longtitude_value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;utc data :%lf<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>rmc_info.<span style="color: #202020;">utc_data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		sleep<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//睡眠</span>
	<span style="color: #009900;">&#125;</span>
	close<span style="color: #009900;">&#40;</span>fd_gps<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.imliby.com/index.php/gprmc-data-processing-of-serial-gps-device-under-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>留个记号</title>
		<link>http://www.imliby.com/index.php/leave-a-mark-3/</link>
		<comments>http://www.imliby.com/index.php/leave-a-mark-3/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 07:10:47 +0000</pubDate>
		<dc:creator>liby</dc:creator>
				<category><![CDATA[技事巧事]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[学习]]></category>

		<guid isPermaLink="false">http://www.imliby.com/?p=779</guid>
		<description><![CDATA[1 2 3 4 5 6 7 8 9 10 #!/bin/bash a=$1 b=$2 echo &#34;$a,$b&#34; if &#91; $a -gt $b &#93; then echo &#34;$a&#62;$b&#34; else echo &#34;$b&#62;$a&#34; fi 1 2 3 4 5 6 7 8 9 10 11 12 13 #!/bin/bash folder=$PWD echo &#34;$folder&#34; count=0 for files in * do if &#91; -f &#34;$files&#34; [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/bin/bash</span>
a=$1
b=$2
echo <span style="color: #483d8b;">&quot;$a,$b&quot;</span>
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#91;</span> $a -gt $b <span style="color: black;">&#93;</span>
then
echo <span style="color: #483d8b;">&quot;$a&gt;$b&quot;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>
echo <span style="color: #483d8b;">&quot;$b&gt;$a&quot;</span>
fi</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/bin/bash</span>
folder=$PWD
echo <span style="color: #483d8b;">&quot;$folder&quot;</span>
count=<span style="color: #ff4500;">0</span>
<span style="color: #ff7700;font-weight:bold;">for</span> files <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #66cc66;">*</span>
do
<span style="color: #ff7700;font-weight:bold;">if</span>
<span style="color: black;">&#91;</span> -f <span style="color: #483d8b;">&quot;$files&quot;</span> <span style="color: black;">&#93;</span>
then
count=<span style="color: #66cc66;">`</span>expr $count + <span style="color: #ff4500;">1</span><span style="color: #66cc66;">`</span>
fi
done
echo $count</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/bin/bash</span>
echo -n <span style="color: #483d8b;">&quot;input number:&quot;</span>
read num
nbak=$num
i=<span style="color: #ff4500;">0</span>
reverse=<span style="color: #483d8b;">&quot;&quot;</span>
<span style="color: #ff7700;font-weight:bold;">while</span> <span style="color: black;">&#91;</span> $nbak -ne <span style="color: #ff4500;">0</span> <span style="color: black;">&#93;</span>
do
i=$<span style="color: black;">&#91;</span> $nbak <span style="color: #66cc66;">%</span> <span style="color: #ff4500;">10</span><span style="color: black;">&#93;</span>
nbak=$<span style="color: black;">&#91;</span> $nbak / <span style="color: #ff4500;">10</span><span style="color: black;">&#93;</span>
reverse=<span style="color: #483d8b;">&quot;$reverse$i&quot;</span>
done
echo <span style="color: #483d8b;">&quot;$reverse&quot;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/bin/bash</span>
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#91;</span> $1 = <span style="color: #483d8b;">&quot;&quot;</span> <span style="color: black;">&#93;</span> || <span style="color: black;">&#91;</span> $2 =  <span style="color: #483d8b;">&quot;&quot;</span><span style="color: black;">&#93;</span>
then
echo <span style="color: #483d8b;">&quot;enter parameter&quot;</span>
exit <span style="color: #ff4500;">1</span>
fi
source=$PWD/$1
desert=$2
echo <span style="color: #483d8b;">&quot;$source move to $desert&quot;</span>
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#91;</span> -e $desert$1 <span style="color: black;">&#93;</span>
then
until <span style="color: black;">&#91;</span> <span style="color: #66cc66;">!</span>-e $desert$1 <span style="color: black;">&#93;</span>
do
echo <span style="color: #483d8b;">&quot;files has been deleted&quot;</span>
done
<span style="color: #ff7700;font-weight:bold;">else</span>
mv $PWD/$1 $desert/$1
fi</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.imliby.com/index.php/leave-a-mark-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>并发TCP服务器端与客户端</title>
		<link>http://www.imliby.com/index.php/concurrent-tcp-server-and-the-clients/</link>
		<comments>http://www.imliby.com/index.php/concurrent-tcp-server-and-the-clients/#comments</comments>
		<pubDate>Sat, 10 Mar 2012 11:51:51 +0000</pubDate>
		<dc:creator>liby</dc:creator>
				<category><![CDATA[技事巧事]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.imliby.com/?p=774</guid>
		<description><![CDATA[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
<span style="color: #339933;">#include &lt;string.h&gt;</span>
<span style="color: #339933;">#include &lt;netdb.h&gt;</span>
<span style="color: #339933;">#include &lt;sys/types.h&gt;</span>
<span style="color: #339933;">#include &lt;sys/socket.h&gt;</span>
<span style="color: #339933;">#include &lt;netinet/in.h&gt;</span>
&nbsp;
<span style="color: #339933;">#define PORT_SERVER 9898</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> socket_fd<span style="color: #339933;">,</span>fd<span style="color: #339933;">;</span>
	<span style="color: #993333;">int</span> nread<span style="color: #339933;">;</span>
	<span style="color: #993333;">int</span> size<span style="color: #339933;">;</span>
	<span style="color: #993333;">char</span> buffer<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1024</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #993333;">struct</span> sockaddr_in ad_s<span style="color: #339933;">,</span>ad_c<span style="color: #339933;">;</span>
&nbsp;
&nbsp;
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>socket_fd<span style="color: #339933;">=</span>socket<span style="color: #009900;">&#40;</span>AF_INET<span style="color: #339933;">,</span>SOCK_STREAM<span style="color: #339933;">,</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;socket error<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	bzero<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>ad_s<span style="color: #339933;">,</span><span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>ad_s<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ad_s.<span style="color: #202020;">sin_family</span><span style="color: #339933;">=</span>AF_INET<span style="color: #339933;">;</span>
	ad_s.<span style="color: #202020;">sin_addr</span>.<span style="color: #202020;">s_addr</span><span style="color: #339933;">=</span>htonl<span style="color: #009900;">&#40;</span>INADDR_ANY<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ad_s.<span style="color: #202020;">sin_port</span><span style="color: #339933;">=</span>htons<span style="color: #009900;">&#40;</span>PORT_SERVER<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>bind<span style="color: #009900;">&#40;</span>socket_fd<span style="color: #339933;">,</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">struct</span> sockaddr <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span>ad_s<span style="color: #339933;">,</span><span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>ad_s<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;bind error<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>listen<span style="color: #009900;">&#40;</span>socket_fd<span style="color: #339933;">,</span><span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;listen error<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		size<span style="color: #339933;">=</span><span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">struct</span> sockaddr_in<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		bzero<span style="color: #009900;">&#40;</span>buffer<span style="color: #339933;">,</span><span style="color: #0000dd;">1024</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>fd<span style="color: #339933;">=</span>accept<span style="color: #009900;">&#40;</span>socket_fd<span style="color: #339933;">,</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">struct</span> sockaddr <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span>ad_c<span style="color: #339933;">,&amp;</span>size<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;accept error<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;server connect from %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>inet_ntoa<span style="color: #009900;">&#40;</span>ad_c.<span style="color: #202020;">sin_addr</span>.<span style="color: #202020;">s_addr</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>fork<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>nread<span style="color: #339933;">=</span>read<span style="color: #009900;">&#40;</span>fd<span style="color: #339933;">,</span>buffer<span style="color: #339933;">,</span><span style="color: #0000dd;">1024</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;read error<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		buffer<span style="color: #009900;">&#91;</span>nread<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #ff0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #339933;">;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;server receive %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>buffer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">else</span>
			close<span style="color: #009900;">&#40;</span>fd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	close<span style="color: #009900;">&#40;</span>socket_fd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
<span style="color: #339933;">#include &lt;string.h&gt;</span>
<span style="color: #339933;">#include &lt;netdb.h&gt;</span>
<span style="color: #339933;">#include &lt;sys/types.h&gt;</span>
<span style="color: #339933;">#include &lt;sys/socket.h&gt;</span>
<span style="color: #339933;">#include &lt;netinet/in.h&gt;</span>
&nbsp;
<span style="color: #339933;">#define PORT_CLIENT 9898</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argv<span style="color: #339933;">,</span><span style="color: #993333;">char</span> <span style="color: #339933;">*</span>argc<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">struct</span> hostent <span style="color: #339933;">*</span>host<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>argv<span style="color: #339933;">&lt;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		perror<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;parameter error<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>host<span style="color: #339933;">=</span>gethostbyname<span style="color: #009900;">&#40;</span>argc<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span>NULL<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;gethostname error<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #993333;">int</span> sock_fd<span style="color: #339933;">;</span>
	<span style="color: #993333;">struct</span> sockaddr_in ad_s<span style="color: #339933;">;</span>
	<span style="color: #993333;">char</span> buffer<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1024</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>sock_fd<span style="color: #339933;">=</span>socket<span style="color: #009900;">&#40;</span>AF_INET<span style="color: #339933;">,</span>SOCK_STREAM<span style="color: #339933;">,</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;socket error<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	bzero<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>ad_s<span style="color: #339933;">,</span><span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>ad_s<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ad_s.<span style="color: #202020;">sin_family</span><span style="color: #339933;">=</span>AF_INET<span style="color: #339933;">;</span>
	ad_s.<span style="color: #202020;">sin_port</span><span style="color: #339933;">=</span>htons<span style="color: #009900;">&#40;</span>PORT_CLIENT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ad_s.<span style="color: #202020;">sin_addr</span><span style="color: #339933;">=*</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">struct</span> in_addr<span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>host<span style="color: #339933;">-&gt;</span>h_addr<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>connect<span style="color: #009900;">&#40;</span>sock_fd<span style="color: #339933;">,</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">struct</span> sockaddr <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span>ad_s<span style="color: #339933;">,</span><span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>ad_s<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;connect error<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;input something...<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	bzero<span style="color: #009900;">&#40;</span>buffer<span style="color: #339933;">,</span><span style="color: #0000dd;">1024</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	fgets<span style="color: #009900;">&#40;</span>buffer<span style="color: #339933;">,</span><span style="color: #0000dd;">1024</span><span style="color: #339933;">,</span>stdin<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	write<span style="color: #009900;">&#40;</span>sock_fd<span style="color: #339933;">,</span>buffer<span style="color: #339933;">,</span>strlen<span style="color: #009900;">&#40;</span>buffer<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	close<span style="color: #009900;">&#40;</span>sock_fd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.imliby.com/index.php/concurrent-tcp-server-and-the-clients/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

