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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:6 _" p7 p3 p" F9 C, U) b
  1. #include
    3 ~4 v& P( m4 x6 t
  2. #include
    4 |) Y3 h, f6 \1 Z
  3. #include
    ( d* q# G! T% @1 Z* Y% ^! O
  4. #include
    9 g8 j/ K5 r% I  R' ~
  5. #include
    7 x  A" ?- L: p. t5 q2 b
  6. #include
    . l5 f2 ]) ?% G" ]4 ^$ B
  7. #include; ]% G8 _4 m6 n! }" b, i! t
  8. #include
复制代码

4 y4 {: O. b) V1 {) y
7 i9 h6 V9 p" R1 [( A5 e服务器代码如下:
' J( K  u& @7 U7 b& v* b, m
  1. #include
    7 X2 [8 O, }& C) F
  2. #include/ R* [5 b/ o: e$ v
  3. #include
    2 p* M! t% p3 o3 W. {
  4. #include( c' B& }1 y' U
  5. #include4 I9 B1 M$ t) C4 A3 t" f1 l3 e0 F0 W
  6. #include( v) ~2 [, w5 q/ R1 {; ^% e
  7. #include4 h4 d$ L; l& |0 @' O0 Z: r
  8. #include
复制代码

/ `! \" G, k* ?4 o4 E" f4 X+ S. ?2 l- n: ^2 b

, f1 q# J/ o6 E

- b/ X% _$ Y( ^) T4 `+ Y
7 }7 _$ R6 n! Z/ _

$ t2 C" l. m# ^8 G& g7 ?! ~6 w
; G; U+ {  N, \' y( T- j! E
: q, C% Z+ r6 Q4 F0 N
. V" E0 X) L0 d4 W6 ~5 Z

$ B+ {! g! b- o: L- Q
; M: k0 e0 x1 ?. k0 l

* x3 F, k7 V# H. k( o' @/ `
, ~# O1 H, _# `& ]
, E0 K, j3 @' M  U! F( ^
# Z! ^! x, r1 J$ X  m" D5 `4 o

& k* R# y1 c, d, ?% X; N" A. C- @4 @* Q# D; y  \% X

* t2 p# @/ j! O: o) l' C
6 P7 R, ~3 R- V# I6 g; a
( q: t& o( l) s' p$ ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:5 u5 k. J4 y8 G
#include <sys/types.h> ; M" t' q" p9 S) Z: j
#include <sys/socket.h> 9 J: i, w4 h0 h; \2 O
#include <unistd.h> 
% |% b/ B+ W$ d#include <netinet/in.h> 
% V4 b! u5 P9 X# [$ l; X! h#include <arpa/inet.h> ! I6 e, Q5 b+ X4 b* D8 D9 \' S0 F7 |5 M
#include <string.h> 1 y( b3 |/ f; b$ }6 W3 `* T8 u8 M; {
#include <stdio.h>  
+ }& b8 m) c0 iint main() {0 ?$ M6 i' d( }0 y3 o
        int sockClient;3 o- V( a- L& r7 T# Z3 G
        struct sockaddr_in addrSrv;; T, N2 b# p8 _( i8 r. _* @0 e
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
* W: L; g9 h2 R+ V+ a        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");/ x, s- ^2 t- y& h
        addrSrv.sin_family=AF_INET;
0 l* M* j- C( r! h  G        addrSrv.sin_port=htons(6000);5 Z# H3 n( P6 o# m" |+ U* S
        while(1)0 I6 k2 g( ?/ F) K+ Q  r( {
        {
2 p6 v/ e- v& W' o. W; o- Z                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));+ |2 H' L- Z4 [1 a* ^9 d
                sleep(2);6 W( o. A# P* U  s. S
        }    
5 D& ?4 o: T' V( H% c        close(sockClient);    A. Z9 I& A4 G/ i( |
        return 0; 
5 p; @6 [) S, ~2 j( G}
/ H! l% Y+ f7 y- l( c7 j9 N( j$ B, p0 q, O! O
/ {; l# R5 w% j: n* V9 K7 N' _
客户端:
  1. #include <stdio.h> % U) R- a; X$ k, q
  2. #include <sys/types.h> 4 o: o' p4 f7 O1 J
  3. #include <sys/socket.h> 
    ; R; D: ?6 M  ]: ?
  4. #include <netinet/in.h> , }- b- c# ]% [5 l
  5. #include <arpa/inet.h> 
    % C& U. t% S2 B$ P* @  T
  6. #include <string.h> 2 ?- A# j; N3 s/ {8 N1 D1 _& X2 y
  7. #include <unistd.h> 
    ' Y1 B0 u5 X7 g
  8. #include <fcntl.h> 
    % \* M' ^; ^9 B* M* r$ ^
  9. #include <sys/time.h> 
    $ s4 {, i# e" L* v5 ]; n. U
  10. #include <sys/select.h> $ ?' J' S' s2 e2 A5 n
  11. #include <sys/ioctl.h>  
    ( s) e2 A) a2 d
  12. int main() {# t) C# Q- z% b7 n8 G+ R: J& P
  13.         int sockSrv;
    / r( V- F! o2 J. m& l2 W
  14.         struct sockaddr_in addrSrv;' b* ^6 R/ z" T3 P  J
  15.         int len;/ {) L# O' g! O
  16.         char recvBuf[100];! A' d' ]# u) F" e: g
  17.         scanf("%s",recvBuf);/ n( O  w" Z2 |
  18.         struct sockaddr_in addrClient;. J7 i. \. W7 C  }# L
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    / K: R% }4 p' n3 B
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);/ r6 m! V  [; ?6 S
  21.         addrSrv.sin_family = AF_INET;
    9 A' `, W; c. b7 R& a: t0 e1 G
  22.         addrSrv.sin_port = htons(6000);% v. H8 B3 `$ X1 G
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));6 l) |6 M- v# k. z, u  \
  24.         len = sizeof(struct sockaddr);
    : g  |8 x( P: `- {" y. Z
  25.         memset(recvBuf, 0, 100);# X& B# Z* Q. Q1 p4 k
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    . h- z9 @: z  L( S( N; t  K; ~
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    0 v9 w9 }: Q: D9 \1 q/ g( f
  28.         printf("Client data is:%s\n",recvBuf);, }# i' ~% U+ T3 `4 p
  29.         close(sockSrv);
    ) S' ]9 {# h+ _0 r* e* N0 e
  30.         return 0;% R* O% s$ q  ?9 {- x5 Y. P. n
  31. } 
复制代码
+ E- R! Q2 C: l

, f( R! N0 s* ?2 d7 k2 U* h, B- W/ o& X
7 i2 i, o6 \6 I2 q/ C: H) |
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-4-30 21:19 , Processed in 0.078636 second(s), 19 queries .

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