ObjFW  Diff

Differences From Artifact [a265aae238]:

To Artifact [2d157422ed]:


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
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







+











+

-
-
-
+
+
+


-
-
+
+



-
+




















+

-
-
-
+
+
+


-
-
+
+



-
+














-
+





	return port;
}

int
main()
{
	uint16_t port;
	OFString *service;

	srand(time(NULL));

	@try {
		OFTCPSocket *server = [OFTCPSocket tcpSocket];
		OFTCPSocket *client = [OFTCPSocket tcpSocket];
		OFTCPSocket *accepted;
		char buf[7];

		puts("== IPv4 ==");
		port = get_port();
		service = [OFString stringWithFormat: @"%d", port];

		[server bindOn: "localhost"
		      withPort: port
		     andFamily: AF_INET];
		[server bindService: service
			     onNode: @"localhost"
			 withFamily: AF_INET];
		[server listen];

		[client connectTo: "localhost"
			   onPort: port];
		[client connectToService: service
				  onNode: @"localhost"];

		accepted = [server accept];

		[client writeCString: "Hallo!"];
		[client writeString: @"Hallo!"];
		[accepted readNBytes: 6
			  intoBuffer: buf];
		buf[6] = 0;

		if (!strcmp(buf, "Hallo!"))
			puts("Received correct string!");
		else {
			puts("Received INCORRECT string!");
			return 1;
		}

#ifdef HAVE_IPV6
		memset(buf, 0, 7);

		[accepted release];
		[client close];
		[server close];

		puts("== IPv6 ==");
		port = get_port();
		service = [OFString stringWithFormat: @"%d", port];

		[server bindOn: "::1"
		      withPort: port
		     andFamily: AF_INET6];
		[server bindService: service
			     onNode: @"::1"
			 withFamily: AF_INET6];
		[server listen];

		[client connectTo: "::1"
			   onPort: port];
		[client connectToService: service
				  onNode: @"::1"];

		accepted = [server accept];

		[client writeCString: "IPv6:)"];
		[client writeString: @"IPv6:)"];
		[accepted readNBytes: 6
			  intoBuffer: buf];
		buf[6] = 0;

		if (!strcmp(buf, "IPv6:)"))
			puts("Received correct string!");
		else {
			puts("Received INCORRECT string!");
			return 1;
		}
#endif

		[accepted release];
	} @catch (OFException *e) {
		printf("EXCEPTION: %s\n", [e cString]);
		printf("EXCEPTION: %s\n", [[e string] cString]);
		return 1;
	}

	return 0;
}