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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
8 [6 j9 k2 f$ x4 u( ~0 u
  1. #include
      \# x6 |" ]+ z2 W0 C
  2. #include" n& \2 l% k. w0 h
  3. #include
    ! c: O; W. i" \/ T  J4 r
  4. #include
    $ }1 y9 _# Z' G  D
  5. #include2 Q, K8 C' l# {6 T- e9 m
  6. #include
    ) `' s* M1 J. c3 x
  7. #include
    . Q7 J1 i1 c0 P$ u1 w; j6 I% P
  8. #include
复制代码

$ t* o6 q1 _! H1 a, _, f' T2 {* U) P/ A
服务器代码如下:4 f7 R) c1 j  D- n. ^
  1. #include0 _1 D7 ^. s6 n9 T! {
  2. #include
    - l/ X8 }, Y! U6 ^) W
  3. #include
      {$ i2 e% n+ @$ h1 ~# K
  4. #include
    ( W! S  w3 N* E/ R" ?% p8 Y
  5. #include0 \6 o. c3 V: w0 c( c& S- k
  6. #include+ z& x) u4 F1 {) I+ w
  7. #include+ o8 j: c# I" }# `3 k3 K4 v5 {
  8. #include
复制代码
# F! t0 W, B. G5 L* N+ e7 Y
9 Z( B' D/ h' L: u! ~

9 f' ~5 N4 t6 P( g: ?* A0 c- `9 i
9 Y# P. h; B9 \. A- @/ C& u
3 ?4 D- ?9 _3 T. ]. n4 E, j. R/ t, L

: a, ~+ @  l% \
: J' A4 x+ c+ M

( ^, j8 X! ?# |! Z& t7 u* K7 l: {  t  U; h* N% N( ~' }" z* J$ c
  H/ e9 X' G* @' k

0 V+ T- k4 x/ B& [

. ]" j8 M$ T" @' W
( S$ F) {; l' b( Q

/ A$ r( G$ @9 d# T+ {2 }/ O( ]- \9 `3 g; ~

# \8 R* e0 O: `1 J( U9 m1 L* R: |( c5 F& V, H. n2 W

# M. l3 h5 z, L2 k/ x' W$ g9 }5 Z# T2 n2 n% H6 N; h, {
/ ]3 Z  ~* j& K; v% E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
) s' @5 V% u0 {0 Q#include <sys/types.h> 
; k2 q; E) a' q: K; ?, A2 V/ K#include <sys/socket.h> / ^. d8 q: U, _  ^6 v/ Q  k. R! E
#include <unistd.h> 
. h  A1 ?. R% u- ?3 b, }#include <netinet/in.h> 1 m- Z- B( `  \+ x
#include <arpa/inet.h> ( B- d) E0 v8 q- |1 x9 g; \! ~9 z% n
#include <string.h> 6 M  ]! W9 m5 U$ A3 [! E. Y: c- N
#include <stdio.h>  
* n8 ?# K" E* e+ A! Q0 u6 jint main() {
; _5 B0 U$ }* D* J  m0 ~& p$ g        int sockClient;
) z/ J1 E( J+ H3 X. C0 F        struct sockaddr_in addrSrv;8 r9 s& R  M" N/ t
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
: o, q4 W( X" W  a( g. c3 n, Q! f        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");! H; ^9 k4 N6 e4 P
        addrSrv.sin_family=AF_INET;  y* y/ W6 O0 S  ~% k8 D
        addrSrv.sin_port=htons(6000);$ W) s2 K/ H6 L, \% o+ J, [
        while(1)
1 B6 \2 }8 l4 C" \% S/ E        {: M7 A8 S( y& b5 X+ K4 l( E
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));' ~! F: L1 N/ h4 c# E" H
                sleep(2);! h# o" I0 p1 R5 g
        }    
& E, f) c' e- L% r) P3 {/ a8 P        close(sockClient);  
& z' e$ y% a) H' E" L        return 0; 
+ U4 d- m% E" F% n4 y1 E. a/ o$ E}* d, q; ^6 E' E$ q' d
, f2 L9 c) f/ S

" R; l9 h. b3 N. Y客户端:
  1. #include <stdio.h> " ~; e0 {& ^# q  W
  2. #include <sys/types.h> 8 [, g6 T7 j) V$ Q/ o$ `
  3. #include <sys/socket.h> # z& T" t0 i) @, i7 y
  4. #include <netinet/in.h> ; e8 L5 S- f2 @
  5. #include <arpa/inet.h> 7 V- C# u0 R. w7 _8 K" X
  6. #include <string.h> 0 O( h0 [, |. O; B1 Z
  7. #include <unistd.h> : k" a& p2 F9 s6 P. T* d- [; F
  8. #include <fcntl.h> 4 W0 c. a. X+ c" p7 g, r$ Y7 f2 [
  9. #include <sys/time.h> ) M0 C: z4 b  b% R* D; u4 y
  10. #include <sys/select.h> 8 x" {5 W& e  w) o- k6 R
  11. #include <sys/ioctl.h>  
    % D+ e% ?  N! p8 c: K/ V6 ]7 R/ C6 J
  12. int main() {7 r4 ~5 e! G3 M! h1 ^2 |9 B
  13.         int sockSrv;
    - k  f' K* @+ Q1 O! w. v& I
  14.         struct sockaddr_in addrSrv;
    : ]) x1 W( ^( z4 c/ }- K
  15.         int len;2 w( c. X6 j/ H; N
  16.         char recvBuf[100];
    ! u, s% B' {' q" P+ s
  17.         scanf("%s",recvBuf);
      r/ p+ x7 W. A) @
  18.         struct sockaddr_in addrClient;) W; r8 A3 c+ \) V' ?" s
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
      d0 q& r2 x& b8 U2 c- E+ ?4 B
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    3 R% r1 n* u1 i4 Y3 }
  21.         addrSrv.sin_family = AF_INET;  R, R+ }% S! E6 g# e' s) V8 r
  22.         addrSrv.sin_port = htons(6000);' a! p7 `0 W* }/ ]" l- y: r
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    , o3 w! i* a  o* @: Z
  24.         len = sizeof(struct sockaddr);
    - e2 n( Q2 h* F% I1 H/ L0 k
  25.         memset(recvBuf, 0, 100);
    & W5 t6 G" z8 e, R. g- _
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);  Q/ X4 j+ A6 r1 I( [. @
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));/ K5 g7 m8 M8 ~6 d' L
  28.         printf("Client data is:%s\n",recvBuf);
    7 L" |/ T: G1 `% J
  29.         close(sockSrv);0 r; b/ e% R/ M6 ^
  30.         return 0;5 q7 S- p& M/ t! D* ^
  31. } 
复制代码

. L4 s  x( Y: {3 s; _' P9 h
7 u/ H( v# V, V% N) u, t" \7 P: y6 n" B: _
$ I$ R& }; R# ^% P5 d4 _
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 08:10 , Processed in 0.063551 second(s), 18 queries .

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