您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8432|回复: 1
打印 上一主题 下一主题

[C] C语言学习之Linux下TCP服务器与客户端的实现

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:: V0 v2 M5 ?7 R6 q3 I
  1. #include! Z: j" w+ b* P
  2. #include1 n7 ^! J0 p4 r; l6 V6 [) n1 X
  3. #include
    - y) r+ c/ H5 S* J
  4. #include! u* L2 [2 O( F% D4 m& c# l8 {
  5. #include
    : C2 Y" ~, g$ T; m
  6. #include
    5 e: M# r9 @4 c( z) @1 Y9 c: a5 y# \" Q
  7. #include
    - T* {% t( a, o/ ~. D
  8. #include
复制代码

, U* e: V& _8 |. n( c3 F( K+ H
服务器代码如下:
4 j, ~4 Z1 v2 k/ f
  1. #include" ^  O) b: O/ P5 d
  2. #include
    ' j/ @9 M! F1 i% ]3 K6 \
  3. #include
    5 Z: r* q% e7 `
  4. #include
    8 t7 I7 |- I7 w' I* u
  5. #include! D' n! J" ^, u" p/ _# n' u
  6. #include1 l, |3 h% R- T) h. ]" X# c5 ?
  7. #include
    & \, u6 c: g7 {& Q, \1 N0 M
  8. #include
复制代码

" r$ ~1 t! E& Q1 S/ N. O' ]) e/ \# Q& ]& }7 ?* H

2 H( s% Y* ?3 E5 {+ ?
, K' d) Q3 G% D* j$ K1 U* B
) l" H' A! g1 i) p- B+ M' Q
' ]2 S/ [" U/ I! i  x/ j
8 `; M$ m: W5 I4 J  D7 T

; ^) T5 m& f& }3 i( W! X. `
" n4 @  T# k( P% N- v

+ v! q8 k2 h' Y1 _) {8 l. Q- F/ b$ h$ Q! n2 [: {" W+ V$ t1 t# Q

7 N5 [2 w- ^! x! J8 t8 i9 Q( X4 s1 E1 P( Y5 F4 x
1 w, S6 a( U) _

2 f- ?3 k% Q: `" I: P8 x2 e2 p

7 _( z7 u* _' h! W/ J6 ]& X) q( I* i! l! X0 ?

/ J, {8 p% c- T% `% t; i& J( d" L! l; b1 ?. P! }

9 j' f! H& b' ^: Q, O7 \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:9 m6 }. }. X0 x
#include <sys/types.h> ' x) w! o6 O: C7 Z" l
#include <sys/socket.h> 
% {. Q" e4 v* |: r#include <unistd.h> 
6 d. O- a: N  J! L#include <netinet/in.h> 
5 P* Q! |6 Z: y#include <arpa/inet.h> 
. k+ K1 ?, S' J- S! H- L#include <string.h> 
: i; p0 m: x5 h' j% p* z4 ?$ f7 u2 M3 w#include <stdio.h>  7 E0 R7 K4 W5 F3 N0 a" T* t
int main() {
, h9 a0 b+ z# _. O* K$ X2 Z        int sockClient;3 D$ S2 Y! {6 m
        struct sockaddr_in addrSrv;; P) g  L' Q- x: \7 x
        sockClient = socket(AF_INET,SOCK_DGRAM,0);" ^5 ^, E2 |3 Q0 @: q1 ~9 _
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
+ B% L7 T5 V6 l        addrSrv.sin_family=AF_INET;9 d1 P: F7 y3 p
        addrSrv.sin_port=htons(6000);
( H" i! z+ N; `; p  w        while(1)( n; Y5 {$ O7 k, }! F
        {
! J. ~- p' Z% r% F% j                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));3 n2 F/ e8 Z2 o: G- p. P9 o6 V
                sleep(2);
2 U. R# i5 k& w* C* b        }    
# {; _" L( i7 u/ l" e" V        close(sockClient);  6 ]8 G- T2 ?5 E$ s$ e
        return 0; 
8 P$ d1 Y1 K9 R}% ?7 `) b1 C3 [, H
6 E6 y' M; d" B

1 `3 J; }3 w4 L客户端:
  1. #include <stdio.h> # c9 [6 R5 R+ J+ o2 J  u: d
  2. #include <sys/types.h> 
    ! A" Z+ [3 f9 \
  3. #include <sys/socket.h> * e+ I, m. l- _  U: p% L2 q; Y
  4. #include <netinet/in.h> 
    & c  x0 S5 U/ o2 y( @1 B2 A+ e
  5. #include <arpa/inet.h> ; }8 B0 U  r+ W; }& m. ?
  6. #include <string.h> 
    : H& J5 l0 E7 C1 C! t
  7. #include <unistd.h> 
    : V+ Z1 g' x( l" r
  8. #include <fcntl.h> ) j1 W8 P, T+ p
  9. #include <sys/time.h> 3 a& i$ Y# {# u7 T) ]
  10. #include <sys/select.h> # e/ x1 H2 B: e
  11. #include <sys/ioctl.h>  5 q8 o) m& i/ }
  12. int main() {
    & h7 @% q$ R+ H( ]; c" m
  13.         int sockSrv;
    1 U$ d; u6 p4 X5 z3 O
  14.         struct sockaddr_in addrSrv;; R! d; T. X  k1 N0 {( W# W) z6 @7 k8 j
  15.         int len;
    0 O, G- [# n9 c- R
  16.         char recvBuf[100];
    ' L% l4 s  O7 S6 T. b
  17.         scanf("%s",recvBuf);
    ) q7 |. O9 U4 C" T9 ~
  18.         struct sockaddr_in addrClient;
    / o, g& r* U! h1 Q' D/ T/ a
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);2 g0 f; m- E9 b6 ~/ N% t# z1 B$ _
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    1 f" W7 L6 Q# a& I) C3 \5 u4 O/ F" f( K
  21.         addrSrv.sin_family = AF_INET;
    " f& o& }/ j& G( L" }$ _
  22.         addrSrv.sin_port = htons(6000);6 \$ J4 M1 g* @  G# r
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    & k$ s* m$ D* r
  24.         len = sizeof(struct sockaddr);
    : b8 m' ~$ Z; E% ^; o/ o7 Q
  25.         memset(recvBuf, 0, 100);. |3 P' ?5 S9 p$ ~
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    8 E$ ~" O2 r+ ?% C- Q% I
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    * V: }3 F) T2 `4 a$ [
  28.         printf("Client data is:%s\n",recvBuf);
    " l( m( u+ n* k* v" `
  29.         close(sockSrv);. e- _' D7 y  o  X6 E8 R* \
  30.         return 0;, |+ c* T7 B9 z8 ]
  31. } 
复制代码
6 I! D% o- D6 a
; k6 Y4 Q2 j- \( n2 s
" v! t, X/ L( R" p1 x( L

1 P; p9 j8 y8 w9 Z# p
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-19 04:59 , Processed in 0.105366 second(s), 18 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!