×

linux下socket编程 socket c

Linux下C语言socket编程?怎样用jdbc连接mysql数据库

admin admin 发表于2022-05-26 11:32:28 浏览103 评论0

抢沙发发表评论

Linux下C语言socket编程


socket编程一般是基于tcp或者udp协议来写的,你的问题很抽象,我不知道你要的是基于tcp还是udp的socket编译。我把相对难的基于tcp协议的socket编译给你吧。你想看懂我的代码需要知道tcp的三次握手机制。否则我写了注释,你看代码也有点困难。 ////服务端的代码
1 #include 《stdio.h》
2 #include 《string.h》
3 #include 《sys/socket.h》
4 #include 《unistd.h》
5 #include 《netinet/in.h》
6 #include 《sys/stat.h》
7 #include 《stdlib.h》
8 #include 《arpa/inet.h》
9
10 #define LOCAL_PORT 1234
11 #define MAX_LEN 512
12 #define MAX_NUM 5
13
14 int main(int argc, char *argv)
15 {
16 int sock_fd, sock_data;
17 int ret, len_addr;
18 char buf[MAX_LEN];
19 ssize_t len;
20 struct sockaddr_in local_addr, remote_addr;
21
22 sock_fd = socket(AF_INET, SOCK_STREAM, 0); //创建套接字,sock_fd是套接字描述符,类似我们的身份证号码
23 if (sock_fd 《 0)
24 {
25 perror(“socket()“);
26 return sock_fd;
27 }
28
29 local_addr.sin_family = AF_INET;// 协议族,ipv4
30 local_addr.sin_port = htons(LOCAL_PORT);// 把服务器端口转换成网络字节序
31 local_addr.sin_addr.s_addr = inet_addr(“127.0.0.1“);//把字符串形式的ip转换成网络字节序
32
33 ret = bind(sock_fd, (struct sockaddr *)&local_addr, (size_t)sizeof(local_addr));// 把sock_fd和本机ip,端口邦定
34 if (ret 《 0)
35 {
36 perror(“bind()“);
37 close(sock_fd);
38 return ret;
39 }
40
41 ret = listen(sock_fd, MAX_NUM);//监听socket
42 if (ret)
43 {
44 perror(“listen()“);
45 close(sock_fd);
46 return ret;
47 }
48
49 memset(buf, 0, MAX_LEN);
50
51 len_addr = sizeof(remote_addr);
52
53 sock_data = accept(sock_fd, (struct sockaddr *)&remote_addr, (socklen_t *)&len_addr);//接受客户端的连接
54 if (ret 《 0)
55 {
56 perror(“accept()“);
57 close(sock_fd);
58 return ret;
59 }
60
61 while (1)
62 {
63 int slen;
64 len = recv(sock_data, buf, MAX_LEN, 0);//接受客户端的数据
65 if (len 《 0)
66 {
67 perror(“recv()“);
68 close(sock_data);
69 close(sock_fd);
70 return len;
71 }
72 printf(“%s\n“, buf);
73
74 slen = send(sock_data, “congratulation!“, 15, 0);//向客户端发送数据
75 if (slen 《= 0)
76 {
77 printf(“slen = %d\n“, slen);
78 perror(“send()“);
79 close(sock_data);
80 close(sock_fd);
81 return slen;
82 }
83 sleep(1);
84 }
85
86 close(sock_data);
87 close(sock_fd);
88
89 return 0;
90 }
////////////客户端的代码 1 #include 《stdio.h》
2 #include 《string.h》
3 #include 《sys/socket.h》
4 #include 《unistd.h》
5 #include 《netinet/in.h》
6 #include 《sys/stat.h》
7 #include 《stdlib.h》
8 #include 《arpa/inet.h》
9
10 #define REMOTE_PORT 1234
11 #define MAX_LEN 512
12
13 int main(int argc, char *argv)
14 {
15 int sock_fd, ret;
16 int len;
17 char buf[MAX_LEN];
18 struct sockaddr_in local_addr, remote_addr;
19
20 sock_fd = socket(AF_INET, SOCK_STREAM, 0);
21 if (sock_fd 《 0)
22 {
23 perror(“socket()“);
24 return sock_fd;
25 }
26
28 local_addr.sin_family = AF_INET;
29 local_addr.sin_addr.s_addr = htonl(INADDR_ANY); //自动获取本机的ip地址
30 local_addr.sin_port = htons(0); //随机选取可用的端口,并不是指定端口为0
31
33 remote_addr.sin_family= AF_INET;
34 remote_addr.sin_port = htons(REMOTE_PORT);
35 ret = inet_aton(“127.0.0.1“, &remote_addr.sin_addr);
36
38 ret = bind(sock_fd, (struct sockaddr *)&local_addr, sizeof(local_addr)); //把本机的ip,port和socket绑定
39 if (ret 《 0)
40 {
41 perror(“bind() !“);
42 close(sock_fd);
43 return ret;
44 }
45
47 ret = connect(sock_fd, (struct sockaddr *)&remote_addr, (socklen_t)sizeof(remote_addr)); //把本机的socket和对方的port,ip建立连接
48 if (ret 《 0)
49 {
50 perror(“connect()“);
51 close(sock_fd);
52 return ret;
53 }
54
55 memset(buf, 0, MAX_LEN);
56
57 while (1)
58 {
59 int i;
60 // len = send(sock_fd, buf, (size_t)MAX_LEN, 0);
61 len = send(sock_fd, “hello“, 6, 0);
62 if (len 《= 0)
63 {
64 perror(“send()“);
65 close(sock_fd);
66 return ret;
67 }
68
69 // printf(“%d--》bytes send!\n“, len);
70 sleep(1);
71
72 len = recv(sock_fd, buf, MAX_LEN, 0);
73 if (len 《= 0)
74 {
75 perror(“recv()“);
76 close(sock_fd);
77 return ret;
78 }
79
80 for (i = 0; i 《 len; i++)
81 {
82 printf(“%c“, buf[i]);
83 }
84 printf(“\n“);
85 }
86
87 close(sock_fd);
88
89 return 0;
90 }
你把服务端和客户端这两个程序分别保存为server.c和client.c。然后编译gcc server.c -o server,gcc client .c -o client。运行时先运行服务端,用命令./server,再运行客户端,用命令./client。 注意运行命令是“点 斜杠”,“点”表示当前目录。

怎样用jdbc连接mysql数据库


1.在新建的Project中右键新建Floder

2
2.创建名为lib的包

3.创建完毕之后的工程目录

4.接下来解压你下载的mysql的jar包,拷贝其中的.jar文件

5.在工程lib包下邮件 选择paste即粘贴,把mysql的jar包拷贝进来

6.拷贝完毕如图:

7.在mysql的jar包上右键选择 build path - add to build path

8.添加完毕之后,工程才与Mysql的jar包关联起来,现在可以使用相关类和方法了

9.在工程中新建JdbcTest1.java类

10.输入如下代码:

11.代码解释:
Driver是个实现类,它由具体的数据库厂商来实现。
它的connect方法可以获取数据库连接。参数如上图。
运行之后,输出如下,证明数据库连接成功!

12.说明:这个是使用Driver连接数据库的,而通常开发中使用的是DriverManager或数据库连接池,这个仅作为理解数据库连接事例使用。

求教,js中,javascript:void(0)是什么意思


在网站当中,通常会将a标签的href属性设置为“javascript:void(0)“,目的是:创建一个超链接,但是,在点击链接时,既不能够跳转,也不会引起页面的刷新。
void 是 JavaScript 中的一个关键字,该操作符指定要计算一个表达式但是不返回值
-socket