updates for 2nd video
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
build/
|
||||
out/
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
// Language version of C3.
|
||||
"langrev": "1",
|
||||
// Warnings used for all targets.
|
||||
"warnings": [ "no-unused" ],
|
||||
// Directories where C3 library files may be found.
|
||||
"dependency-search-paths": [ "lib" ],
|
||||
// Libraries to use for all targets.
|
||||
"dependencies": [ ],
|
||||
// Authors, optionally with email.
|
||||
"authors": [ "John Doe <john.doe@example.com>" ],
|
||||
// Version using semantic versioning.
|
||||
"version": "0.1.0",
|
||||
// Sources compiled for all targets.
|
||||
"sources": [ "src/**" ],
|
||||
// Test sources compiled for all targets.
|
||||
"test-sources": [ "test/**" ],
|
||||
// C sources if the project also compiles C sources
|
||||
// relative to the project file.
|
||||
// "c-sources": [ "csource/**" ],
|
||||
// Include directories for C sources relative to the project file.
|
||||
// "c-include-dirs": [ "csource/include" ],
|
||||
// Build location, relative to project file.
|
||||
"build-dir": "build",
|
||||
// Output location, relative to project file.
|
||||
"output": "build",
|
||||
// Architecture and OS target.
|
||||
// You can use 'c3c --list-targets' to list all valid targets.
|
||||
// "target": "windows-x64",
|
||||
// Targets.
|
||||
"targets": {
|
||||
"client": {
|
||||
// Executable or library.
|
||||
"type": "executable",
|
||||
// Additional libraries, sources
|
||||
// and overrides of global settings here.
|
||||
},
|
||||
},
|
||||
// Global settings.
|
||||
// CPU name, used for optimizations in the LLVM backend.
|
||||
"cpu": "generic",
|
||||
// Optimization: "O0", "O1", "O2", "O3", "O4", "O5", "Os", "Oz".
|
||||
"opt": "O0"
|
||||
// See resources/examples/project_all_settings.json and 'c3c --list-project-properties' to see more properties.
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
module client;
|
||||
import std::net;
|
||||
import std::io;
|
||||
|
||||
const uint BUFFER_SIZE = 4096;
|
||||
|
||||
fn void? sendMsg(String url, uint port, String msg) {
|
||||
TcpSocket socket = tcp::connect(url, port)!;
|
||||
|
||||
int pos = 0;
|
||||
while (try sent = socket.write(msg[pos:msg.len])) {
|
||||
|
||||
if (sent == 0) break;
|
||||
|
||||
pos += (int)sent;
|
||||
|
||||
if (sent >= msg.len) break;
|
||||
}
|
||||
|
||||
char[BUFFER_SIZE] buffer;
|
||||
usz recv = socket.read(&buffer)!;
|
||||
|
||||
io::printfn("%s", (String)buffer[:recv]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
module client;
|
||||
import std::io;
|
||||
|
||||
fn int main(String[] args) {
|
||||
if (args.len < 4) {
|
||||
io::printn("error: not enough arguments");
|
||||
io::printfn("usage: %s <host> <port> <msg>", args[0]);
|
||||
return -1;
|
||||
}
|
||||
String host = args[1];
|
||||
uint? port = args[2].to_uint();
|
||||
if (catch err = port) {
|
||||
io::printfn("couldn't convert %s to a port", args[2]);
|
||||
return -1;
|
||||
}
|
||||
String msg = args[3];
|
||||
|
||||
sendMsg(host, port, msg)!!;
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user